From 25b011afab511adf0b32ae9db724505653f7e449 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 8 Apr 2026 00:26:29 +0300 Subject: [PATCH 01/21] wip --- package-lock.json | 8 +-- package.json | 2 +- src/module.ts | 166 ++++++++++++++++++++++------------------------ 3 files changed, 86 insertions(+), 90 deletions(-) diff --git a/package-lock.json b/package-lock.json index ebe2359041..ec0bfeb902 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "123.0.0-nightly.20250530", + "binaryen": "129.0.0-nightly.20260405", "long": "^5.2.4" }, "bin": { @@ -978,9 +978,9 @@ } }, "node_modules/binaryen": { - "version": "123.0.0-nightly.20250530", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-123.0.0-nightly.20250530.tgz", - "integrity": "sha512-d1zPHBN5YlOd3Ff+OUxvVExuFeh8heSnqe+X3bjItFxGLvn4VGBKmrvv7pgy/cRhrIUGuPW138iaWfDhwjyDqg==", + "version": "129.0.0-nightly.20260405", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-129.0.0-nightly.20260405.tgz", + "integrity": "sha512-QpxizLk9A5XuflqHxiacJYSpPAEu7iHxESG1Wzuy2LEQ+HmoYvbVcbzHBqhCGwQjvoHFBTpd9FtPeaqbCYPRMw==", "license": "Apache-2.0", "bin": { "wasm-as": "bin/wasm-as", diff --git a/package.json b/package.json index f1ed7f85d1..ec0f98ce12 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "engineStrict": true, "dependencies": { - "binaryen": "123.0.0-nightly.20250530", + "binaryen": "129.0.0-nightly.20260405", "long": "^5.2.4" }, "devDependencies": { diff --git a/src/module.ts b/src/module.ts index 2719f60c50..4f10c09c90 100644 --- a/src/module.ts +++ b/src/module.ts @@ -217,7 +217,10 @@ export const enum FeatureFlags { FP16 = 262144 /* _BinaryenFeatureFP16 */, BulkMemoryOpt = 524288 /* _BinaryenFeatureBulkMemoryOpt */, CallIndirectOverlong = 1048576 /* _BinaryenFeatureCallIndirectOverlong */, - All = 4194303 /* _BinaryenFeatureAll */ + RelaxedAtomics = 4194304 /* _BinaryenFeatureRelaxedAtomics */, + Multibyte = 16777216 /* _BinaryenFeatureMultibyte */, + CustomPageSizes = 8388608 /* _BinaryenFeatureCustomPageSizes */, + All = 33554431 /* _BinaryenFeatureAll */ } /** Binaryen expression id constants. See wasm-delegations.def in Binaryen. */ @@ -251,74 +254,74 @@ export const enum ExpressionId { AtomicWait = 26 /* _BinaryenAtomicWaitId */, AtomicNotify = 27 /* _BinaryenAtomicNotifyId */, AtomicFence = 28 /* _BinaryenAtomicFenceId */, - SIMDExtract = 29 /* _BinaryenSIMDExtractId */, - SIMDReplace = 30 /* _BinaryenSIMDReplaceId */, - SIMDShuffle = 31 /* _BinaryenSIMDShuffleId */, - SIMDTernary = 32 /* _BinaryenSIMDTernaryId */, - SIMDShift = 33 /* _BinaryenSIMDShiftId */, - SIMDLoad = 34 /* _BinaryenSIMDLoadId */, - SIMDLoadStoreLane = 35 /* _BinaryenSIMDLoadStoreLaneId */, - MemoryInit = 36 /* _BinaryenMemoryInitId */, - DataDrop = 37 /* _BinaryenDataDropId */, - MemoryCopy = 38 /* _BinaryenMemoryCopyId */, - MemoryFill = 39 /* _BinaryenMemoryFillId */, - Pop = 40 /* _BinaryenPopId */, - RefNull = 41 /* _BinaryenRefNullId */, - RefIsNull = 42 /* _BinaryenRefIsNullId */, - RefFunc = 43 /* _BinaryenRefFuncId */, - RefEq = 44 /* _BinaryenRefEqId */, - TableGet = 45 /* _BinaryenTableGetId */, - TableSet = 46 /* _BinaryenTableSetId */, - TableSize = 47 /* _BinaryenTableSizeId */, - TableGrow = 48 /* _BinaryenTableGrowId */, - TableFill = 49 /* _BinaryenTableFillId */, - TableCopy = 50 /* _BinaryenTableCopyId */, - TableInit = 51 /* _BinaryenTableInitId */, - Try = 52 /* _BinaryenTryId */, - TryTable = 53 /* _BinaryenTryTableId */, - Throw = 54 /* _BinaryenThrowId */, - Rethrow = 55 /* _BinaryenRethrowId */, - ThrowRef = 56 /* _BinaryenThrowRefId */, - TupleMake = 57 /* _BinaryenTupleMakeId */, - TupleExtract = 58 /* _BinaryenTupleExtractId */, - RefI31 = 59 /* _BinaryenRefI31Id */, - I31Get = 60 /* _BinaryenI31GetId */, - CallRef = 61 /* _BinaryenCallRefId */, - RefTest = 62 /* _BinaryenRefTestId */, - RefCast = 63 /* _BinaryenRefCastId */, - RefGetDesc = 64 /* _BinaryenRefGetDescId */, - BrOn = 65 /* _BinaryenBrOnId */, - StructNew = 66 /* _BinaryenStructNewId */, - StructGet = 67 /* _BinaryenStructGetId */, - StructSet = 68 /* _BinaryenStructSetId */, - StructRMW = 69 /* _BinaryenStructRMWId */, - StructCmpxchg = 70 /* _BinaryenStructCmpxchgId */, - ArrayNew = 71 /* _BinaryenArrayNewId */, - ArrayNewData = 72 /* _BinaryenArrayNewDataId */, - ArrayNewElem = 73 /* _BinaryenArrayNewElemId */, - ArrayNewFixed = 74 /* _BinaryenArrayNewFixedId */, - ArrayGet = 75 /* _BinaryenArrayGetId */, - ArraySet = 76 /* _BinaryenArraySetId */, - ArrayLen = 77 /* _BinaryenArrayLenId */, - ArrayCopy = 78 /* _BinaryenArrayCopyId */, - ArrayFill = 79 /* _BinaryenArrayFillId */, - ArrayInitData = 80 /* _BinaryenArrayInitDataId */, - ArrayInitElem = 81 /* _BinaryenArrayInitElemId */, - RefAs = 82 /* _BinaryenRefAsId */, - StringNew = 83 /* _BinaryenStringNewId */, - StringConst = 84 /* _BinaryenStringConstId */, - StringMeasure = 85 /* _BinaryenStringMeasureId */, - StringEncode = 86 /* _BinaryenStringEncodeId */, - StringConcat = 87 /* _BinaryenStringConcatId */, - StringEq = 88 /* _BinaryenStringEqId */, - StringWTF16Get = 89 /* _BinaryenStringWTF16GetId */, - StringSliceWTF = 90 /* _BinaryenStringSliceWTFId */, - ContNew = 91 /* _BinaryenContNewId */, - ContBind = 92 /* _BinaryenContBindId */, - Suspend = 93 /* _BinaryenSuspendId */, - Resume = 94 /* _BinaryenResumeId */, - ResumeThrow = 95 /* _BinaryenResumeThrowId */, - StackSwitch = 96 /* _BinaryenStackSwitchId */ + SIMDExtract = 30 /* _BinaryenSIMDExtractId */, + SIMDReplace = 31 /* _BinaryenSIMDReplaceId */, + SIMDShuffle = 32 /* _BinaryenSIMDShuffleId */, + SIMDTernary = 33 /* _BinaryenSIMDTernaryId */, + SIMDShift = 34 /* _BinaryenSIMDShiftId */, + SIMDLoad = 35 /* _BinaryenSIMDLoadId */, + SIMDLoadStoreLane = 36 /* _BinaryenSIMDLoadStoreLaneId */, + MemoryInit = 37 /* _BinaryenMemoryInitId */, + DataDrop = 38 /* _BinaryenDataDropId */, + MemoryCopy = 39 /* _BinaryenMemoryCopyId */, + MemoryFill = 40 /* _BinaryenMemoryFillId */, + Pop = 41 /* _BinaryenPopId */, + RefNull = 42 /* _BinaryenRefNullId */, + RefIsNull = 43 /* _BinaryenRefIsNullId */, + RefFunc = 44 /* _BinaryenRefFuncId */, + RefEq = 45 /* _BinaryenRefEqId */, + TableGet = 46 /* _BinaryenTableGetId */, + TableSet = 47 /* _BinaryenTableSetId */, + TableSize = 48 /* _BinaryenTableSizeId */, + TableGrow = 49 /* _BinaryenTableGrowId */, + TableFill = 50 /* _BinaryenTableFillId */, + TableCopy = 51 /* _BinaryenTableCopyId */, + TableInit = 52 /* _BinaryenTableInitId */, + Try = 54 /* _BinaryenTryId */, + TryTable = 55 /* _BinaryenTryTableId */, + Throw = 56 /* _BinaryenThrowId */, + Rethrow = 57 /* _BinaryenRethrowId */, + ThrowRef = 58 /* _BinaryenThrowRefId */, + TupleMake = 59 /* _BinaryenTupleMakeId */, + TupleExtract = 60 /* _BinaryenTupleExtractId */, + RefI31 = 61 /* _BinaryenRefI31Id */, + I31Get = 62 /* _BinaryenI31GetId */, + CallRef = 63 /* _BinaryenCallRefId */, + RefTest = 64 /* _BinaryenRefTestId */, + RefCast = 65 /* _BinaryenRefCastId */, + RefGetDesc = 66 /* _BinaryenRefGetDescId */, + BrOn = 67 /* _BinaryenBrOnId */, + StructNew = 68 /* _BinaryenStructNewId */, + StructGet = 69 /* _BinaryenStructGetId */, + StructSet = 70 /* _BinaryenStructSetId */, + StructRMW = 71 /* _BinaryenStructRMWId */, + StructCmpxchg = 72 /* _BinaryenStructCmpxchgId */, + ArrayNew = 73 /* _BinaryenArrayNewId */, + ArrayNewData = 74 /* _BinaryenArrayNewDataId */, + ArrayNewElem = 75 /* _BinaryenArrayNewElemId */, + ArrayNewFixed = 76 /* _BinaryenArrayNewFixedId */, + ArrayGet = 77 /* _BinaryenArrayGetId */, + ArraySet = 78 /* _BinaryenArraySetId */, + ArrayLen = 81 /* _BinaryenArrayLenId */, + ArrayCopy = 82 /* _BinaryenArrayCopyId */, + ArrayFill = 83 /* _BinaryenArrayFillId */, + ArrayInitData = 84 /* _BinaryenArrayInitDataId */, + ArrayInitElem = 85 /* _BinaryenArrayInitElemId */, + RefAs = 88 /* _BinaryenRefAsId */, + StringNew = 89 /* _BinaryenStringNewId */, + StringConst = 90 /* _BinaryenStringConstId */, + StringMeasure = 91 /* _BinaryenStringMeasureId */, + StringEncode = 92 /* _BinaryenStringEncodeId */, + StringConcat = 93 /* _BinaryenStringConcatId */, + StringEq = 94 /* _BinaryenStringEqId */, + StringWTF16Get = 96 /* _BinaryenStringWTF16GetId */, + StringSliceWTF = 97 /* _BinaryenStringSliceWTFId */, + ContNew = 98 /* _BinaryenContNewId */, + ContBind = 99 /* _BinaryenContBindId */, + Suspend = 100 /* _BinaryenSuspendId */, + Resume = 101 /* _BinaryenResumeId */, + ResumeThrow = 102 /* _BinaryenResumeThrowId */, + StackSwitch = 103 /* _BinaryenStackSwitchId */ } /** Binaryen external kind constants. */ @@ -1215,31 +1218,24 @@ export const enum SIMDLoadStoreLaneOp { export const enum SIMDTernaryOp { /** v128.bitselect */ Bitselect = 0 /* _BinaryenBitselectVec128 */, - - // Relaxed SIMD for F16 - /** f16x8.relaxed_madd */ - RelaxedMaddVecF16x8 = 1 /* TODO_BinaryenRelaxedMaddVecF16x8 */, - /** f16x8.relaxed_nmadd */ - RelaxedNmaddVecF16x8 = 2 /* TODO_BinaryenRelaxedNmaddVecF16x8 */, - /** f32x4.relaxed_madd */ - RelaxedMaddF32x4 = 3 /* _BinaryenRelaxedMaddVecF32x4 */, + RelaxedMaddF32x4 = 1 /* _BinaryenRelaxedMaddVecF32x4 */, /** f32x4.relaxed_nmadd */ - RelaxedNmaddF32x4 = 4 /* _BinaryenRelaxedNmaddVecF32x4 */, + RelaxedNmaddF32x4 = 2 /* _BinaryenRelaxedNmaddVecF32x4 */, /** f64x2.relaxed_madd */ - RelaxedMaddF64x2 = 5 /* _BinaryenRelaxedMaddVecF64x2 */, + RelaxedMaddF64x2 = 3 /* _BinaryenRelaxedMaddVecF64x2 */, /** f64x2.relaxed_nmadd */ - RelaxedNmaddF64x2 = 6 /* _BinaryenRelaxedNmaddVecF64x2 */, + RelaxedNmaddF64x2 = 4 /* _BinaryenRelaxedNmaddVecF64x2 */, /** i8x16.relaxed_laneselect */ - RelaxedLaneselectI8x16 = 7 /* _BinaryenLaneselectI8x16 */, + RelaxedLaneselectI8x16 = 5 /* _BinaryenLaneselectI8x16 */, /** i16x8.relaxed_laneselect */ - RelaxedLaneselectI16x8 = 8 /* _BinaryenLaneselectI16x8 */, + RelaxedLaneselectI16x8 = 6 /* _BinaryenLaneselectI16x8 */, /** i32x4.relaxed_laneselect */ - RelaxedLaneselectI32x4 = 9 /* _BinaryenLaneselectI32x4 */, + RelaxedLaneselectI32x4 = 7 /* _BinaryenLaneselectI32x4 */, /** i64x2.relaxed_laneselect */ - RelaxedLaneselectI64x2 = 10 /* _BinaryenLaneselectI64x2 */, + RelaxedLaneselectI64x2 = 8 /* _BinaryenLaneselectI64x2 */, /** i32x4.relaxed_dot_i8x16_i7x16_add_s */ - RelaxedDotI8x16I7x16AddToI32x4 = 11 /* _BinaryenDotI8x16I7x16AddSToVecI32x4 */, + RelaxedDotI8x16I7x16AddToI32x4 = 9 /* _BinaryenDotI8x16I7x16AddSToVecI32x4 */, } /** Binaryen RefAs operation constants. */ From 428dfc7097b93bb7425b68949e385e7a351f40dc Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 22 Apr 2026 20:56:13 +0300 Subject: [PATCH 02/21] update deps --- package-lock.json | 462 +++++++++++++++++++++++----------------------- package.json | 14 +- 2 files changed, 238 insertions(+), 238 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec0bfeb902..03f52464f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "129.0.0-nightly.20260405", + "binaryen": "129.0.0-nightly.20260422", "long": "^5.2.4" }, "bin": { @@ -18,15 +18,15 @@ }, "devDependencies": { "@eslint/js": "^10.0.1", - "@types/node": "^25.5.0", + "@types/node": "^25.6.0", "as-float": "^1.0.1", - "diff": "^8.0.4", - "esbuild": "^0.27.0", - "eslint": "^10.1.0", + "diff": "^9.0.0", + "esbuild": "^0.28.0", + "eslint": "^10.2.1", "glob": "^13.0.6", - "globals": "^17.4.0", + "globals": "^17.5.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.57.2" + "typescript-eslint": "^8.59.0" }, "engines": { "node": ">=20", @@ -38,9 +38,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", - "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", + "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", "cpu": [ "ppc64" ], @@ -55,9 +55,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", - "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", + "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", "cpu": [ "arm" ], @@ -72,9 +72,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", - "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", + "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", "cpu": [ "arm64" ], @@ -89,9 +89,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", - "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", + "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", "cpu": [ "x64" ], @@ -106,9 +106,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", - "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", + "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", "cpu": [ "arm64" ], @@ -123,9 +123,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", - "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", + "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", "cpu": [ "x64" ], @@ -140,9 +140,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", - "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", + "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", "cpu": [ "arm64" ], @@ -157,9 +157,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", - "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", + "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", "cpu": [ "x64" ], @@ -174,9 +174,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", - "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", + "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", "cpu": [ "arm" ], @@ -191,9 +191,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", - "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", + "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", "cpu": [ "arm64" ], @@ -208,9 +208,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", - "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", + "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", "cpu": [ "ia32" ], @@ -225,9 +225,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", - "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", + "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", "cpu": [ "loong64" ], @@ -242,9 +242,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", - "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", + "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", "cpu": [ "mips64el" ], @@ -259,9 +259,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", - "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", + "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", "cpu": [ "ppc64" ], @@ -276,9 +276,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", - "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", + "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", "cpu": [ "riscv64" ], @@ -293,9 +293,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", - "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", + "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", "cpu": [ "s390x" ], @@ -310,9 +310,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", - "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", + "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", "cpu": [ "x64" ], @@ -327,9 +327,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", - "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", + "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", "cpu": [ "arm64" ], @@ -344,9 +344,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", - "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", + "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", "cpu": [ "x64" ], @@ -361,9 +361,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", - "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", + "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", "cpu": [ "arm64" ], @@ -378,9 +378,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", - "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", + "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", "cpu": [ "x64" ], @@ -395,9 +395,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", - "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", + "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", "cpu": [ "arm64" ], @@ -412,9 +412,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", - "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", + "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", "cpu": [ "x64" ], @@ -429,9 +429,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", - "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", + "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", "cpu": [ "arm64" ], @@ -446,9 +446,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", - "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", + "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", "cpu": [ "ia32" ], @@ -463,9 +463,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", - "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", + "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", "cpu": [ "x64" ], @@ -509,13 +509,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.23.3", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz", - "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==", + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^3.0.3", + "@eslint/object-schema": "^3.0.5", "debug": "^4.3.1", "minimatch": "^10.2.4" }, @@ -524,22 +524,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz", - "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz", + "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.1.1" + "@eslint/core": "^1.2.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz", - "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -571,9 +571,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz", - "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -581,13 +581,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz", - "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz", + "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.1.1", + "@eslint/core": "^1.2.1", "levn": "^0.4.1" }, "engines": { @@ -668,30 +668,30 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", - "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.19.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.2.tgz", - "integrity": "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.0.tgz", + "integrity": "sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/type-utils": "8.57.2", - "@typescript-eslint/utils": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/type-utils": "8.59.0", + "@typescript-eslint/utils": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -701,9 +701,9 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.57.2", + "@typescript-eslint/parser": "^8.59.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { @@ -717,16 +717,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.2.tgz", - "integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.0.tgz", + "integrity": "sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3" }, "engines": { @@ -738,18 +738,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.2.tgz", - "integrity": "sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.0.tgz", + "integrity": "sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.57.2", - "@typescript-eslint/types": "^8.57.2", + "@typescript-eslint/tsconfig-utils": "^8.59.0", + "@typescript-eslint/types": "^8.59.0", "debug": "^4.4.3" }, "engines": { @@ -760,18 +760,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.2.tgz", - "integrity": "sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.0.tgz", + "integrity": "sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2" + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -782,9 +782,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.2.tgz", - "integrity": "sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.0.tgz", + "integrity": "sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==", "dev": true, "license": "MIT", "engines": { @@ -795,21 +795,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.2.tgz", - "integrity": "sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.0.tgz", + "integrity": "sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2", - "@typescript-eslint/utils": "8.57.2", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -820,13 +820,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.2.tgz", - "integrity": "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.0.tgz", + "integrity": "sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==", "dev": true, "license": "MIT", "engines": { @@ -838,21 +838,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.2.tgz", - "integrity": "sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.0.tgz", + "integrity": "sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.57.2", - "@typescript-eslint/tsconfig-utils": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", + "@typescript-eslint/project-service": "8.59.0", + "@typescript-eslint/tsconfig-utils": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -862,20 +862,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.2.tgz", - "integrity": "sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.0.tgz", + "integrity": "sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2" + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -886,17 +886,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.2.tgz", - "integrity": "sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.0.tgz", + "integrity": "sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/types": "8.59.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -978,9 +978,9 @@ } }, "node_modules/binaryen": { - "version": "129.0.0-nightly.20260405", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-129.0.0-nightly.20260405.tgz", - "integrity": "sha512-QpxizLk9A5XuflqHxiacJYSpPAEu7iHxESG1Wzuy2LEQ+HmoYvbVcbzHBqhCGwQjvoHFBTpd9FtPeaqbCYPRMw==", + "version": "129.0.0-nightly.20260422", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-129.0.0-nightly.20260422.tgz", + "integrity": "sha512-Sro8xjjdaTSVUZc0aL98EA2T3jT6BVq4ehCdsGguyGZ2aGlj0OrdWwY7fsD6NqhjZIoON5xRX/lQ2vfaOaRGSA==", "license": "Apache-2.0", "bin": { "wasm-as": "bin/wasm-as", @@ -1048,9 +1048,9 @@ "license": "MIT" }, "node_modules/diff": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", - "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -1058,9 +1058,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", - "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", + "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1071,32 +1071,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.4", - "@esbuild/android-arm": "0.27.4", - "@esbuild/android-arm64": "0.27.4", - "@esbuild/android-x64": "0.27.4", - "@esbuild/darwin-arm64": "0.27.4", - "@esbuild/darwin-x64": "0.27.4", - "@esbuild/freebsd-arm64": "0.27.4", - "@esbuild/freebsd-x64": "0.27.4", - "@esbuild/linux-arm": "0.27.4", - "@esbuild/linux-arm64": "0.27.4", - "@esbuild/linux-ia32": "0.27.4", - "@esbuild/linux-loong64": "0.27.4", - "@esbuild/linux-mips64el": "0.27.4", - "@esbuild/linux-ppc64": "0.27.4", - "@esbuild/linux-riscv64": "0.27.4", - "@esbuild/linux-s390x": "0.27.4", - "@esbuild/linux-x64": "0.27.4", - "@esbuild/netbsd-arm64": "0.27.4", - "@esbuild/netbsd-x64": "0.27.4", - "@esbuild/openbsd-arm64": "0.27.4", - "@esbuild/openbsd-x64": "0.27.4", - "@esbuild/openharmony-arm64": "0.27.4", - "@esbuild/sunos-x64": "0.27.4", - "@esbuild/win32-arm64": "0.27.4", - "@esbuild/win32-ia32": "0.27.4", - "@esbuild/win32-x64": "0.27.4" + "@esbuild/aix-ppc64": "0.28.0", + "@esbuild/android-arm": "0.28.0", + "@esbuild/android-arm64": "0.28.0", + "@esbuild/android-x64": "0.28.0", + "@esbuild/darwin-arm64": "0.28.0", + "@esbuild/darwin-x64": "0.28.0", + "@esbuild/freebsd-arm64": "0.28.0", + "@esbuild/freebsd-x64": "0.28.0", + "@esbuild/linux-arm": "0.28.0", + "@esbuild/linux-arm64": "0.28.0", + "@esbuild/linux-ia32": "0.28.0", + "@esbuild/linux-loong64": "0.28.0", + "@esbuild/linux-mips64el": "0.28.0", + "@esbuild/linux-ppc64": "0.28.0", + "@esbuild/linux-riscv64": "0.28.0", + "@esbuild/linux-s390x": "0.28.0", + "@esbuild/linux-x64": "0.28.0", + "@esbuild/netbsd-arm64": "0.28.0", + "@esbuild/netbsd-x64": "0.28.0", + "@esbuild/openbsd-arm64": "0.28.0", + "@esbuild/openbsd-x64": "0.28.0", + "@esbuild/openharmony-arm64": "0.28.0", + "@esbuild/sunos-x64": "0.28.0", + "@esbuild/win32-arm64": "0.28.0", + "@esbuild/win32-ia32": "0.28.0", + "@esbuild/win32-x64": "0.28.0" } }, "node_modules/escape-string-regexp": { @@ -1113,18 +1113,18 @@ } }, "node_modules/eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz", - "integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.2.1.tgz", + "integrity": "sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", - "@eslint/config-array": "^0.23.3", - "@eslint/config-helpers": "^0.5.3", - "@eslint/core": "^1.1.1", - "@eslint/plugin-kit": "^0.6.1", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.5.5", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -1412,9 +1412,9 @@ } }, "node_modules/globals": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", - "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.5.0.tgz", + "integrity": "sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==", "dev": true, "license": "MIT", "engines": { @@ -1748,14 +1748,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -1805,16 +1805,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.2.tgz", - "integrity": "sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.0.tgz", + "integrity": "sha512-BU3ONW9X+v90EcCH9ZS6LMackcVtxRLlI3XrYyqZIwVSHIk7Qf7bFw1z0M9Q0IUxhTMZCf8piY9hTYaNEIASrw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.57.2", - "@typescript-eslint/parser": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2", - "@typescript-eslint/utils": "8.57.2" + "@typescript-eslint/eslint-plugin": "8.59.0", + "@typescript-eslint/parser": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1825,13 +1825,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index ec0f98ce12..4c563fcaaa 100644 --- a/package.json +++ b/package.json @@ -25,20 +25,20 @@ }, "engineStrict": true, "dependencies": { - "binaryen": "129.0.0-nightly.20260405", + "binaryen": "129.0.0-nightly.20260422", "long": "^5.2.4" }, "devDependencies": { "@eslint/js": "^10.0.1", - "@types/node": "^25.5.0", + "@types/node": "^25.6.0", "as-float": "^1.0.1", - "diff": "^8.0.4", - "esbuild": "^0.27.0", - "eslint": "^10.1.0", + "diff": "^9.0.0", + "esbuild": "^0.28.0", + "eslint": "^10.2.1", "glob": "^13.0.6", - "globals": "^17.4.0", + "globals": "^17.5.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.57.2" + "typescript-eslint": "^8.59.0" }, "type": "module", "exports": { From dd185e85709129f78110e1c28f9aa664b63927c6 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 22 Apr 2026 21:06:15 +0300 Subject: [PATCH 03/21] update unicode identifiers --- scripts/unicode-identifier.js | 2 +- src/util/text.ts | 416 ++++++++++++++++++---------------- 2 files changed, 219 insertions(+), 199 deletions(-) diff --git a/scripts/unicode-identifier.js b/scripts/unicode-identifier.js index 5984ff8708..d9788b9502 100644 --- a/scripts/unicode-identifier.js +++ b/scripts/unicode-identifier.js @@ -1,4 +1,4 @@ -// see https://github.com/microsoft/TypeScript/blob/main/scripts/regenerate-unicode-identifier-parts.js +// see https://github.com/microsoft/TypeScript/blob/main/scripts/regenerate-unicode-identifier-parts.mjs const MAX_UNICODE_CODEPOINT = 0x10FFFF; const isStart = c => /[\p{ID_Start}\u{2118}\u{212E}\u{309B}\u{309C}]/u.test(c); // Other_ID_Start explicitly included for back compat - see http://www.unicode.org/reports/tr31/#Introduction diff --git a/src/util/text.ts b/src/util/text.ts index d94f5d2f07..49aca60d20 100644 --- a/src/util/text.ts +++ b/src/util/text.ts @@ -276,7 +276,7 @@ export function isIdentifierPart(cp: i32): bool { && lookupInUnicodeMap(cp, unicodeIdentifierPart); } -/** Tests if the specified string is a valid identifer. */ +/** Tests if the specified string is a valid identifier. */ export function isIdentifier(str: string): bool { let len = str.length; if (!len) return false; @@ -291,7 +291,7 @@ export function isIdentifier(str: string): bool { return true; } -/** Unicode 14.0 ID_Start/Other_ID_Start ranges */ +/** Unicode 17.0 ID_Start/Other_ID_Start ranges */ const unicodeIdentifierStart: i32[] = [/* | from ... to | from ... to | from ... to | from ... to |*/ 170 , 170 , 181 , 181 , 186 , 186 , 192 , 214 , @@ -306,7 +306,7 @@ const unicodeIdentifierStart: i32[] = [/* 1869 , 1957 , 1969 , 1969 , 1994 , 2026 , 2036 , 2037 , 2042 , 2042 , 2048 , 2069 , 2074 , 2074 , 2084 , 2084 , 2088 , 2088 , 2112 , 2136 , 2144 , 2154 , 2160 , 2183 , - 2185 , 2190 , 2208 , 2249 , 2308 , 2361 , 2365 , 2365 , + 2185 , 2191 , 2208 , 2249 , 2308 , 2361 , 2365 , 2365 , 2384 , 2384 , 2392 , 2401 , 2417 , 2432 , 2437 , 2444 , 2447 , 2448 , 2451 , 2472 , 2474 , 2480 , 2482 , 2482 , 2486 , 2489 , 2493 , 2493 , 2510 , 2510 , 2524 , 2525 , @@ -322,9 +322,9 @@ const unicodeIdentifierStart: i32[] = [/* 2962 , 2965 , 2969 , 2970 , 2972 , 2972 , 2974 , 2975 , 2979 , 2980 , 2984 , 2986 , 2990 , 3001 , 3024 , 3024 , 3077 , 3084 , 3086 , 3088 , 3090 , 3112 , 3114 , 3129 , - 3133 , 3133 , 3160 , 3162 , 3165 , 3165 , 3168 , 3169 , + 3133 , 3133 , 3160 , 3162 , 3164 , 3165 , 3168 , 3169 , 3200 , 3200 , 3205 , 3212 , 3214 , 3216 , 3218 , 3240 , - 3242 , 3251 , 3253 , 3257 , 3261 , 3261 , 3293 , 3294 , + 3242 , 3251 , 3253 , 3257 , 3261 , 3261 , 3292 , 3294 , 3296 , 3297 , 3313 , 3314 , 3332 , 3340 , 3342 , 3344 , 3346 , 3386 , 3389 , 3389 , 3406 , 3406 , 3412 , 3414 , 3423 , 3425 , 3450 , 3455 , 3461 , 3478 , 3482 , 3505 , @@ -349,7 +349,7 @@ const unicodeIdentifierStart: i32[] = [/* 6512 , 6516 , 6528 , 6571 , 6576 , 6601 , 6656 , 6678 , 6688 , 6740 , 6823 , 6823 , 6917 , 6963 , 6981 , 6988 , 7043 , 7072 , 7086 , 7087 , 7098 , 7141 , 7168 , 7203 , - 7245 , 7247 , 7258 , 7293 , 7296 , 7304 , 7312 , 7354 , + 7245 , 7247 , 7258 , 7293 , 7296 , 7306 , 7312 , 7354 , 7357 , 7359 , 7401 , 7404 , 7406 , 7411 , 7413 , 7414 , 7418 , 7418 , 7424 , 7615 , 7680 , 7957 , 7960 , 7965 , 7968 , 8005 , 8008 , 8013 , 8016 , 8023 , 8025 , 8025 , @@ -370,70 +370,76 @@ const unicodeIdentifierStart: i32[] = [/* 12704 , 12735 , 12784 , 12799 , 13312 , 19903 , 19968 , 42124 , 42192 , 42237 , 42240 , 42508 , 42512 , 42527 , 42538 , 42539 , 42560 , 42606 , 42623 , 42653 , 42656 , 42735 , 42775 , 42783 , - 42786 , 42888 , 42891 , 42954 , 42960 , 42961 , 42963 , 42963 , - 42965 , 42969 , 42994 , 43009 , 43011 , 43013 , 43015 , 43018 , - 43020 , 43042 , 43072 , 43123 , 43138 , 43187 , 43250 , 43255 , - 43259 , 43259 , 43261 , 43262 , 43274 , 43301 , 43312 , 43334 , - 43360 , 43388 , 43396 , 43442 , 43471 , 43471 , 43488 , 43492 , - 43494 , 43503 , 43514 , 43518 , 43520 , 43560 , 43584 , 43586 , - 43588 , 43595 , 43616 , 43638 , 43642 , 43642 , 43646 , 43695 , - 43697 , 43697 , 43701 , 43702 , 43705 , 43709 , 43712 , 43712 , - 43714 , 43714 , 43739 , 43741 , 43744 , 43754 , 43762 , 43764 , - 43777 , 43782 , 43785 , 43790 , 43793 , 43798 , 43808 , 43814 , - 43816 , 43822 , 43824 , 43866 , 43868 , 43881 , 43888 , 44002 , - 44032 , 55203 , 55216 , 55238 , 55243 , 55291 , 63744 , 64109 , - 64112 , 64217 , 64256 , 64262 , 64275 , 64279 , 64285 , 64285 , - 64287 , 64296 , 64298 , 64310 , 64312 , 64316 , 64318 , 64318 , - 64320 , 64321 , 64323 , 64324 , 64326 , 64433 , 64467 , 64829 , - 64848 , 64911 , 64914 , 64967 , 65008 , 65019 , 65136 , 65140 , - 65142 , 65276 , 65313 , 65338 , 65345 , 65370 , 65382 , 65470 , - 65474 , 65479 , 65482 , 65487 , 65490 , 65495 , 65498 , 65500 , - 65536 , 65547 , 65549 , 65574 , 65576 , 65594 , 65596 , 65597 , - 65599 , 65613 , 65616 , 65629 , 65664 , 65786 , 65856 , 65908 , - 66176 , 66204 , 66208 , 66256 , 66304 , 66335 , 66349 , 66378 , - 66384 , 66421 , 66432 , 66461 , 66464 , 66499 , 66504 , 66511 , - 66513 , 66517 , 66560 , 66717 , 66736 , 66771 , 66776 , 66811 , - 66816 , 66855 , 66864 , 66915 , 66928 , 66938 , 66940 , 66954 , - 66956 , 66962 , 66964 , 66965 , 66967 , 66977 , 66979 , 66993 , - 66995 , 67001 , 67003 , 67004 , 67072 , 67382 , 67392 , 67413 , - 67424 , 67431 , 67456 , 67461 , 67463 , 67504 , 67506 , 67514 , - 67584 , 67589 , 67592 , 67592 , 67594 , 67637 , 67639 , 67640 , - 67644 , 67644 , 67647 , 67669 , 67680 , 67702 , 67712 , 67742 , - 67808 , 67826 , 67828 , 67829 , 67840 , 67861 , 67872 , 67897 , - 67968 , 68023 , 68030 , 68031 , 68096 , 68096 , 68112 , 68115 , - 68117 , 68119 , 68121 , 68149 , 68192 , 68220 , 68224 , 68252 , - 68288 , 68295 , 68297 , 68324 , 68352 , 68405 , 68416 , 68437 , - 68448 , 68466 , 68480 , 68497 , 68608 , 68680 , 68736 , 68786 , - 68800 , 68850 , 68864 , 68899 , 69248 , 69289 , 69296 , 69297 , - 69376 , 69404 , 69415 , 69415 , 69424 , 69445 , 69488 , 69505 , - 69552 , 69572 , 69600 , 69622 , 69635 , 69687 , 69745 , 69746 , - 69749 , 69749 , 69763 , 69807 , 69840 , 69864 , 69891 , 69926 , - 69956 , 69956 , 69959 , 69959 , 69968 , 70002 , 70006 , 70006 , - 70019 , 70066 , 70081 , 70084 , 70106 , 70106 , 70108 , 70108 , - 70144 , 70161 , 70163 , 70187 , 70272 , 70278 , 70280 , 70280 , - 70282 , 70285 , 70287 , 70301 , 70303 , 70312 , 70320 , 70366 , - 70405 , 70412 , 70415 , 70416 , 70419 , 70440 , 70442 , 70448 , - 70450 , 70451 , 70453 , 70457 , 70461 , 70461 , 70480 , 70480 , - 70493 , 70497 , 70656 , 70708 , 70727 , 70730 , 70751 , 70753 , - 70784 , 70831 , 70852 , 70853 , 70855 , 70855 , 71040 , 71086 , - 71128 , 71131 , 71168 , 71215 , 71236 , 71236 , 71296 , 71338 , - 71352 , 71352 , 71424 , 71450 , 71488 , 71494 , 71680 , 71723 , - 71840 , 71903 , 71935 , 71942 , 71945 , 71945 , 71948 , 71955 , - 71957 , 71958 , 71960 , 71983 , 71999 , 71999 , 72001 , 72001 , - 72096 , 72103 , 72106 , 72144 , 72161 , 72161 , 72163 , 72163 , - 72192 , 72192 , 72203 , 72242 , 72250 , 72250 , 72272 , 72272 , - 72284 , 72329 , 72349 , 72349 , 72368 , 72440 , 72704 , 72712 , - 72714 , 72750 , 72768 , 72768 , 72818 , 72847 , 72960 , 72966 , - 72968 , 72969 , 72971 , 73008 , 73030 , 73030 , 73056 , 73061 , - 73063 , 73064 , 73066 , 73097 , 73112 , 73112 , 73440 , 73458 , - 73648 , 73648 , 73728 , 74649 , 74752 , 74862 , 74880 , 75075 , - 77712 , 77808 , 77824 , 78894 , 82944 , 83526 , 92160 , 92728 , - 92736 , 92766 , 92784 , 92862 , 92880 , 92909 , 92928 , 92975 , - 92992 , 92995 , 93027 , 93047 , 93053 , 93071 , 93760 , 93823 , - 93952 , 94026 , 94032 , 94032 , 94099 , 94111 , 94176 , 94177 , - 94179 , 94179 , 94208 , 100343, 100352, 101589, 101632, 101640, - 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, - 110928, 110930, 110948, 110951, 110960, 111355, 113664, 113770, + 42786 , 42888 , 42891 , 42972 , 42993 , 43009 , 43011 , 43013 , + 43015 , 43018 , 43020 , 43042 , 43072 , 43123 , 43138 , 43187 , + 43250 , 43255 , 43259 , 43259 , 43261 , 43262 , 43274 , 43301 , + 43312 , 43334 , 43360 , 43388 , 43396 , 43442 , 43471 , 43471 , + 43488 , 43492 , 43494 , 43503 , 43514 , 43518 , 43520 , 43560 , + 43584 , 43586 , 43588 , 43595 , 43616 , 43638 , 43642 , 43642 , + 43646 , 43695 , 43697 , 43697 , 43701 , 43702 , 43705 , 43709 , + 43712 , 43712 , 43714 , 43714 , 43739 , 43741 , 43744 , 43754 , + 43762 , 43764 , 43777 , 43782 , 43785 , 43790 , 43793 , 43798 , + 43808 , 43814 , 43816 , 43822 , 43824 , 43866 , 43868 , 43881 , + 43888 , 44002 , 44032 , 55203 , 55216 , 55238 , 55243 , 55291 , + 63744 , 64109 , 64112 , 64217 , 64256 , 64262 , 64275 , 64279 , + 64285 , 64285 , 64287 , 64296 , 64298 , 64310 , 64312 , 64316 , + 64318 , 64318 , 64320 , 64321 , 64323 , 64324 , 64326 , 64433 , + 64467 , 64829 , 64848 , 64911 , 64914 , 64967 , 65008 , 65019 , + 65136 , 65140 , 65142 , 65276 , 65313 , 65338 , 65345 , 65370 , + 65382 , 65470 , 65474 , 65479 , 65482 , 65487 , 65490 , 65495 , + 65498 , 65500 , 65536 , 65547 , 65549 , 65574 , 65576 , 65594 , + 65596 , 65597 , 65599 , 65613 , 65616 , 65629 , 65664 , 65786 , + 65856 , 65908 , 66176 , 66204 , 66208 , 66256 , 66304 , 66335 , + 66349 , 66378 , 66384 , 66421 , 66432 , 66461 , 66464 , 66499 , + 66504 , 66511 , 66513 , 66517 , 66560 , 66717 , 66736 , 66771 , + 66776 , 66811 , 66816 , 66855 , 66864 , 66915 , 66928 , 66938 , + 66940 , 66954 , 66956 , 66962 , 66964 , 66965 , 66967 , 66977 , + 66979 , 66993 , 66995 , 67001 , 67003 , 67004 , 67008 , 67059 , + 67072 , 67382 , 67392 , 67413 , 67424 , 67431 , 67456 , 67461 , + 67463 , 67504 , 67506 , 67514 , 67584 , 67589 , 67592 , 67592 , + 67594 , 67637 , 67639 , 67640 , 67644 , 67644 , 67647 , 67669 , + 67680 , 67702 , 67712 , 67742 , 67808 , 67826 , 67828 , 67829 , + 67840 , 67861 , 67872 , 67897 , 67904 , 67929 , 67968 , 68023 , + 68030 , 68031 , 68096 , 68096 , 68112 , 68115 , 68117 , 68119 , + 68121 , 68149 , 68192 , 68220 , 68224 , 68252 , 68288 , 68295 , + 68297 , 68324 , 68352 , 68405 , 68416 , 68437 , 68448 , 68466 , + 68480 , 68497 , 68608 , 68680 , 68736 , 68786 , 68800 , 68850 , + 68864 , 68899 , 68938 , 68965 , 68975 , 68997 , 69248 , 69289 , + 69296 , 69297 , 69314 , 69319 , 69376 , 69404 , 69415 , 69415 , + 69424 , 69445 , 69488 , 69505 , 69552 , 69572 , 69600 , 69622 , + 69635 , 69687 , 69745 , 69746 , 69749 , 69749 , 69763 , 69807 , + 69840 , 69864 , 69891 , 69926 , 69956 , 69956 , 69959 , 69959 , + 69968 , 70002 , 70006 , 70006 , 70019 , 70066 , 70081 , 70084 , + 70106 , 70106 , 70108 , 70108 , 70144 , 70161 , 70163 , 70187 , + 70207 , 70208 , 70272 , 70278 , 70280 , 70280 , 70282 , 70285 , + 70287 , 70301 , 70303 , 70312 , 70320 , 70366 , 70405 , 70412 , + 70415 , 70416 , 70419 , 70440 , 70442 , 70448 , 70450 , 70451 , + 70453 , 70457 , 70461 , 70461 , 70480 , 70480 , 70493 , 70497 , + 70528 , 70537 , 70539 , 70539 , 70542 , 70542 , 70544 , 70581 , + 70583 , 70583 , 70609 , 70609 , 70611 , 70611 , 70656 , 70708 , + 70727 , 70730 , 70751 , 70753 , 70784 , 70831 , 70852 , 70853 , + 70855 , 70855 , 71040 , 71086 , 71128 , 71131 , 71168 , 71215 , + 71236 , 71236 , 71296 , 71338 , 71352 , 71352 , 71424 , 71450 , + 71488 , 71494 , 71680 , 71723 , 71840 , 71903 , 71935 , 71942 , + 71945 , 71945 , 71948 , 71955 , 71957 , 71958 , 71960 , 71983 , + 71999 , 71999 , 72001 , 72001 , 72096 , 72103 , 72106 , 72144 , + 72161 , 72161 , 72163 , 72163 , 72192 , 72192 , 72203 , 72242 , + 72250 , 72250 , 72272 , 72272 , 72284 , 72329 , 72349 , 72349 , + 72368 , 72440 , 72640 , 72672 , 72704 , 72712 , 72714 , 72750 , + 72768 , 72768 , 72818 , 72847 , 72960 , 72966 , 72968 , 72969 , + 72971 , 73008 , 73030 , 73030 , 73056 , 73061 , 73063 , 73064 , + 73066 , 73097 , 73112 , 73112 , 73136 , 73179 , 73440 , 73458 , + 73474 , 73474 , 73476 , 73488 , 73490 , 73523 , 73648 , 73648 , + 73728 , 74649 , 74752 , 74862 , 74880 , 75075 , 77712 , 77808 , + 77824 , 78895 , 78913 , 78918 , 78944 , 82938 , 82944 , 83526 , + 90368 , 90397 , 92160 , 92728 , 92736 , 92766 , 92784 , 92862 , + 92880 , 92909 , 92928 , 92975 , 92992 , 92995 , 93027 , 93047 , + 93053 , 93071 , 93504 , 93548 , 93760 , 93823 , 93856 , 93880 , + 93883 , 93907 , 93952 , 94026 , 94032 , 94032 , 94099 , 94111 , + 94176 , 94177 , 94179 , 94179 , 94194 , 94198 , 94208 , 101589, + 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, + 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, + 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, @@ -442,25 +448,28 @@ const unicodeIdentifierStart: i32[] = [/* 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, - 120772, 120779, 122624, 122654, 123136, 123180, 123191, 123197, - 123214, 123214, 123536, 123565, 123584, 123627, 124896, 124902, - 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, - 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, - 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, - 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, - 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, - 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, - 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, - 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, - 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, - 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, - 173824, 177976, 177984, 178205, 178208, 183969, 183984, 191456, - 194560, 195101, 196608, 201546, + 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, + 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, + 123584, 123627, 124112, 124139, 124368, 124397, 124400, 124400, + 124608, 124638, 124640, 124642, 124644, 124645, 124647, 124653, + 124656, 124660, 124670, 124671, 124896, 124902, 124904, 124907, + 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, + 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, + 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, + 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, + 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, + 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, + 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, + 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, + 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, + 126629, 126633, 126635, 126651, 131072, 173791, 173824, 178205, + 178208, 183981, 183984, 191456, 191472, 192093, 194560, 195101, + 196608, 201546, 201552, 210041, ]; const unicodeIdentifierStartMin = 170; -const unicodeIdentifierStartMax = 201546; +const unicodeIdentifierStartMax = 210041; -/** Unicode 14.0 ID_Continue/Other_ID_Continue + ID_Start/Other_ID_Start ranges*/ +/** Unicode 17.0 ID_Continue/Other_ID_Continue + ID_Start/Other_ID_Start ranges*/ const unicodeIdentifierPart: i32[] = [/* | from ... to | from ... to | from ... to | from ... to |*/ 170 , 170 , 181 , 181 , 183 , 183 , 186 , 186 , @@ -475,7 +484,7 @@ const unicodeIdentifierPart: i32[] = [/* 1759 , 1768 , 1770 , 1788 , 1791 , 1791 , 1808 , 1866 , 1869 , 1969 , 1984 , 2037 , 2042 , 2042 , 2045 , 2045 , 2048 , 2093 , 2112 , 2139 , 2144 , 2154 , 2160 , 2183 , - 2185 , 2190 , 2200 , 2273 , 2275 , 2403 , 2406 , 2415 , + 2185 , 2191 , 2199 , 2273 , 2275 , 2403 , 2406 , 2415 , 2417 , 2435 , 2437 , 2444 , 2447 , 2448 , 2451 , 2472 , 2474 , 2480 , 2482 , 2482 , 2486 , 2489 , 2492 , 2500 , 2503 , 2504 , 2507 , 2510 , 2519 , 2519 , 2524 , 2525 , @@ -497,11 +506,11 @@ const unicodeIdentifierPart: i32[] = [/* 3014 , 3016 , 3018 , 3021 , 3024 , 3024 , 3031 , 3031 , 3046 , 3055 , 3072 , 3084 , 3086 , 3088 , 3090 , 3112 , 3114 , 3129 , 3132 , 3140 , 3142 , 3144 , 3146 , 3149 , - 3157 , 3158 , 3160 , 3162 , 3165 , 3165 , 3168 , 3171 , + 3157 , 3158 , 3160 , 3162 , 3164 , 3165 , 3168 , 3171 , 3174 , 3183 , 3200 , 3203 , 3205 , 3212 , 3214 , 3216 , 3218 , 3240 , 3242 , 3251 , 3253 , 3257 , 3260 , 3268 , - 3270 , 3272 , 3274 , 3277 , 3285 , 3286 , 3293 , 3294 , - 3296 , 3299 , 3302 , 3311 , 3313 , 3314 , 3328 , 3340 , + 3270 , 3272 , 3274 , 3277 , 3285 , 3286 , 3292 , 3294 , + 3296 , 3299 , 3302 , 3311 , 3313 , 3315 , 3328 , 3340 , 3342 , 3344 , 3346 , 3396 , 3398 , 3400 , 3402 , 3406 , 3412 , 3415 , 3423 , 3427 , 3430 , 3439 , 3450 , 3455 , 3457 , 3459 , 3461 , 3478 , 3482 , 3505 , 3507 , 3515 , @@ -509,7 +518,7 @@ const unicodeIdentifierPart: i32[] = [/* 3542 , 3542 , 3544 , 3551 , 3558 , 3567 , 3570 , 3571 , 3585 , 3642 , 3648 , 3662 , 3664 , 3673 , 3713 , 3714 , 3716 , 3716 , 3718 , 3722 , 3724 , 3747 , 3749 , 3749 , - 3751 , 3773 , 3776 , 3780 , 3782 , 3782 , 3784 , 3789 , + 3751 , 3773 , 3776 , 3780 , 3782 , 3782 , 3784 , 3790 , 3792 , 3801 , 3804 , 3807 , 3840 , 3840 , 3864 , 3865 , 3872 , 3881 , 3893 , 3893 , 3895 , 3895 , 3897 , 3897 , 3902 , 3911 , 3913 , 3948 , 3953 , 3972 , 3974 , 3991 , @@ -529,128 +538,139 @@ const unicodeIdentifierPart: i32[] = [/* 6470 , 6509 , 6512 , 6516 , 6528 , 6571 , 6576 , 6601 , 6608 , 6618 , 6656 , 6683 , 6688 , 6750 , 6752 , 6780 , 6783 , 6793 , 6800 , 6809 , 6823 , 6823 , 6832 , 6845 , - 6847 , 6862 , 6912 , 6988 , 6992 , 7001 , 7019 , 7027 , - 7040 , 7155 , 7168 , 7223 , 7232 , 7241 , 7245 , 7293 , - 7296 , 7304 , 7312 , 7354 , 7357 , 7359 , 7376 , 7378 , - 7380 , 7418 , 7424 , 7957 , 7960 , 7965 , 7968 , 8005 , - 8008 , 8013 , 8016 , 8023 , 8025 , 8025 , 8027 , 8027 , - 8029 , 8029 , 8031 , 8061 , 8064 , 8116 , 8118 , 8124 , - 8126 , 8126 , 8130 , 8132 , 8134 , 8140 , 8144 , 8147 , - 8150 , 8155 , 8160 , 8172 , 8178 , 8180 , 8182 , 8188 , - 8255 , 8256 , 8276 , 8276 , 8305 , 8305 , 8319 , 8319 , - 8336 , 8348 , 8400 , 8412 , 8417 , 8417 , 8421 , 8432 , - 8450 , 8450 , 8455 , 8455 , 8458 , 8467 , 8469 , 8469 , - 8472 , 8477 , 8484 , 8484 , 8486 , 8486 , 8488 , 8488 , - 8490 , 8505 , 8508 , 8511 , 8517 , 8521 , 8526 , 8526 , - 8544 , 8584 , 11264 , 11492 , 11499 , 11507 , 11520 , 11557 , - 11559 , 11559 , 11565 , 11565 , 11568 , 11623 , 11631 , 11631 , - 11647 , 11670 , 11680 , 11686 , 11688 , 11694 , 11696 , 11702 , - 11704 , 11710 , 11712 , 11718 , 11720 , 11726 , 11728 , 11734 , - 11736 , 11742 , 11744 , 11775 , 12293 , 12295 , 12321 , 12335 , - 12337 , 12341 , 12344 , 12348 , 12353 , 12438 , 12441 , 12447 , - 12449 , 12538 , 12540 , 12543 , 12549 , 12591 , 12593 , 12686 , - 12704 , 12735 , 12784 , 12799 , 13312 , 19903 , 19968 , 42124 , - 42192 , 42237 , 42240 , 42508 , 42512 , 42539 , 42560 , 42607 , - 42612 , 42621 , 42623 , 42737 , 42775 , 42783 , 42786 , 42888 , - 42891 , 42954 , 42960 , 42961 , 42963 , 42963 , 42965 , 42969 , - 42994 , 43047 , 43052 , 43052 , 43072 , 43123 , 43136 , 43205 , - 43216 , 43225 , 43232 , 43255 , 43259 , 43259 , 43261 , 43309 , - 43312 , 43347 , 43360 , 43388 , 43392 , 43456 , 43471 , 43481 , - 43488 , 43518 , 43520 , 43574 , 43584 , 43597 , 43600 , 43609 , - 43616 , 43638 , 43642 , 43714 , 43739 , 43741 , 43744 , 43759 , - 43762 , 43766 , 43777 , 43782 , 43785 , 43790 , 43793 , 43798 , - 43808 , 43814 , 43816 , 43822 , 43824 , 43866 , 43868 , 43881 , - 43888 , 44010 , 44012 , 44013 , 44016 , 44025 , 44032 , 55203 , - 55216 , 55238 , 55243 , 55291 , 63744 , 64109 , 64112 , 64217 , - 64256 , 64262 , 64275 , 64279 , 64285 , 64296 , 64298 , 64310 , - 64312 , 64316 , 64318 , 64318 , 64320 , 64321 , 64323 , 64324 , - 64326 , 64433 , 64467 , 64829 , 64848 , 64911 , 64914 , 64967 , - 65008 , 65019 , 65024 , 65039 , 65056 , 65071 , 65075 , 65076 , - 65101 , 65103 , 65136 , 65140 , 65142 , 65276 , 65296 , 65305 , - 65313 , 65338 , 65343 , 65343 , 65345 , 65370 , 65382 , 65470 , - 65474 , 65479 , 65482 , 65487 , 65490 , 65495 , 65498 , 65500 , - 65536 , 65547 , 65549 , 65574 , 65576 , 65594 , 65596 , 65597 , - 65599 , 65613 , 65616 , 65629 , 65664 , 65786 , 65856 , 65908 , - 66045 , 66045 , 66176 , 66204 , 66208 , 66256 , 66272 , 66272 , - 66304 , 66335 , 66349 , 66378 , 66384 , 66426 , 66432 , 66461 , - 66464 , 66499 , 66504 , 66511 , 66513 , 66517 , 66560 , 66717 , - 66720 , 66729 , 66736 , 66771 , 66776 , 66811 , 66816 , 66855 , - 66864 , 66915 , 66928 , 66938 , 66940 , 66954 , 66956 , 66962 , - 66964 , 66965 , 66967 , 66977 , 66979 , 66993 , 66995 , 67001 , - 67003 , 67004 , 67072 , 67382 , 67392 , 67413 , 67424 , 67431 , - 67456 , 67461 , 67463 , 67504 , 67506 , 67514 , 67584 , 67589 , - 67592 , 67592 , 67594 , 67637 , 67639 , 67640 , 67644 , 67644 , - 67647 , 67669 , 67680 , 67702 , 67712 , 67742 , 67808 , 67826 , - 67828 , 67829 , 67840 , 67861 , 67872 , 67897 , 67968 , 68023 , + 6847 , 6877 , 6880 , 6891 , 6912 , 6988 , 6992 , 7001 , + 7019 , 7027 , 7040 , 7155 , 7168 , 7223 , 7232 , 7241 , + 7245 , 7293 , 7296 , 7306 , 7312 , 7354 , 7357 , 7359 , + 7376 , 7378 , 7380 , 7418 , 7424 , 7957 , 7960 , 7965 , + 7968 , 8005 , 8008 , 8013 , 8016 , 8023 , 8025 , 8025 , + 8027 , 8027 , 8029 , 8029 , 8031 , 8061 , 8064 , 8116 , + 8118 , 8124 , 8126 , 8126 , 8130 , 8132 , 8134 , 8140 , + 8144 , 8147 , 8150 , 8155 , 8160 , 8172 , 8178 , 8180 , + 8182 , 8188 , 8204 , 8205 , 8255 , 8256 , 8276 , 8276 , + 8305 , 8305 , 8319 , 8319 , 8336 , 8348 , 8400 , 8412 , + 8417 , 8417 , 8421 , 8432 , 8450 , 8450 , 8455 , 8455 , + 8458 , 8467 , 8469 , 8469 , 8472 , 8477 , 8484 , 8484 , + 8486 , 8486 , 8488 , 8488 , 8490 , 8505 , 8508 , 8511 , + 8517 , 8521 , 8526 , 8526 , 8544 , 8584 , 11264 , 11492 , + 11499 , 11507 , 11520 , 11557 , 11559 , 11559 , 11565 , 11565 , + 11568 , 11623 , 11631 , 11631 , 11647 , 11670 , 11680 , 11686 , + 11688 , 11694 , 11696 , 11702 , 11704 , 11710 , 11712 , 11718 , + 11720 , 11726 , 11728 , 11734 , 11736 , 11742 , 11744 , 11775 , + 12293 , 12295 , 12321 , 12335 , 12337 , 12341 , 12344 , 12348 , + 12353 , 12438 , 12441 , 12447 , 12449 , 12543 , 12549 , 12591 , + 12593 , 12686 , 12704 , 12735 , 12784 , 12799 , 13312 , 19903 , + 19968 , 42124 , 42192 , 42237 , 42240 , 42508 , 42512 , 42539 , + 42560 , 42607 , 42612 , 42621 , 42623 , 42737 , 42775 , 42783 , + 42786 , 42888 , 42891 , 42972 , 42993 , 43047 , 43052 , 43052 , + 43072 , 43123 , 43136 , 43205 , 43216 , 43225 , 43232 , 43255 , + 43259 , 43259 , 43261 , 43309 , 43312 , 43347 , 43360 , 43388 , + 43392 , 43456 , 43471 , 43481 , 43488 , 43518 , 43520 , 43574 , + 43584 , 43597 , 43600 , 43609 , 43616 , 43638 , 43642 , 43714 , + 43739 , 43741 , 43744 , 43759 , 43762 , 43766 , 43777 , 43782 , + 43785 , 43790 , 43793 , 43798 , 43808 , 43814 , 43816 , 43822 , + 43824 , 43866 , 43868 , 43881 , 43888 , 44010 , 44012 , 44013 , + 44016 , 44025 , 44032 , 55203 , 55216 , 55238 , 55243 , 55291 , + 63744 , 64109 , 64112 , 64217 , 64256 , 64262 , 64275 , 64279 , + 64285 , 64296 , 64298 , 64310 , 64312 , 64316 , 64318 , 64318 , + 64320 , 64321 , 64323 , 64324 , 64326 , 64433 , 64467 , 64829 , + 64848 , 64911 , 64914 , 64967 , 65008 , 65019 , 65024 , 65039 , + 65056 , 65071 , 65075 , 65076 , 65101 , 65103 , 65136 , 65140 , + 65142 , 65276 , 65296 , 65305 , 65313 , 65338 , 65343 , 65343 , + 65345 , 65370 , 65381 , 65470 , 65474 , 65479 , 65482 , 65487 , + 65490 , 65495 , 65498 , 65500 , 65536 , 65547 , 65549 , 65574 , + 65576 , 65594 , 65596 , 65597 , 65599 , 65613 , 65616 , 65629 , + 65664 , 65786 , 65856 , 65908 , 66045 , 66045 , 66176 , 66204 , + 66208 , 66256 , 66272 , 66272 , 66304 , 66335 , 66349 , 66378 , + 66384 , 66426 , 66432 , 66461 , 66464 , 66499 , 66504 , 66511 , + 66513 , 66517 , 66560 , 66717 , 66720 , 66729 , 66736 , 66771 , + 66776 , 66811 , 66816 , 66855 , 66864 , 66915 , 66928 , 66938 , + 66940 , 66954 , 66956 , 66962 , 66964 , 66965 , 66967 , 66977 , + 66979 , 66993 , 66995 , 67001 , 67003 , 67004 , 67008 , 67059 , + 67072 , 67382 , 67392 , 67413 , 67424 , 67431 , 67456 , 67461 , + 67463 , 67504 , 67506 , 67514 , 67584 , 67589 , 67592 , 67592 , + 67594 , 67637 , 67639 , 67640 , 67644 , 67644 , 67647 , 67669 , + 67680 , 67702 , 67712 , 67742 , 67808 , 67826 , 67828 , 67829 , + 67840 , 67861 , 67872 , 67897 , 67904 , 67929 , 67968 , 68023 , 68030 , 68031 , 68096 , 68099 , 68101 , 68102 , 68108 , 68115 , 68117 , 68119 , 68121 , 68149 , 68152 , 68154 , 68159 , 68159 , 68192 , 68220 , 68224 , 68252 , 68288 , 68295 , 68297 , 68326 , 68352 , 68405 , 68416 , 68437 , 68448 , 68466 , 68480 , 68497 , 68608 , 68680 , 68736 , 68786 , 68800 , 68850 , 68864 , 68903 , - 68912 , 68921 , 69248 , 69289 , 69291 , 69292 , 69296 , 69297 , - 69376 , 69404 , 69415 , 69415 , 69424 , 69456 , 69488 , 69509 , + 68912 , 68921 , 68928 , 68965 , 68969 , 68973 , 68975 , 68997 , + 69248 , 69289 , 69291 , 69292 , 69296 , 69297 , 69314 , 69319 , + 69370 , 69404 , 69415 , 69415 , 69424 , 69456 , 69488 , 69509 , 69552 , 69572 , 69600 , 69622 , 69632 , 69702 , 69734 , 69749 , 69759 , 69818 , 69826 , 69826 , 69840 , 69864 , 69872 , 69881 , 69888 , 69940 , 69942 , 69951 , 69956 , 69959 , 69968 , 70003 , 70006 , 70006 , 70016 , 70084 , 70089 , 70092 , 70094 , 70106 , - 70108 , 70108 , 70144 , 70161 , 70163 , 70199 , 70206 , 70206 , + 70108 , 70108 , 70144 , 70161 , 70163 , 70199 , 70206 , 70209 , 70272 , 70278 , 70280 , 70280 , 70282 , 70285 , 70287 , 70301 , 70303 , 70312 , 70320 , 70378 , 70384 , 70393 , 70400 , 70403 , 70405 , 70412 , 70415 , 70416 , 70419 , 70440 , 70442 , 70448 , 70450 , 70451 , 70453 , 70457 , 70459 , 70468 , 70471 , 70472 , 70475 , 70477 , 70480 , 70480 , 70487 , 70487 , 70493 , 70499 , - 70502 , 70508 , 70512 , 70516 , 70656 , 70730 , 70736 , 70745 , - 70750 , 70753 , 70784 , 70853 , 70855 , 70855 , 70864 , 70873 , - 71040 , 71093 , 71096 , 71104 , 71128 , 71133 , 71168 , 71232 , - 71236 , 71236 , 71248 , 71257 , 71296 , 71352 , 71360 , 71369 , - 71424 , 71450 , 71453 , 71467 , 71472 , 71481 , 71488 , 71494 , - 71680 , 71738 , 71840 , 71913 , 71935 , 71942 , 71945 , 71945 , - 71948 , 71955 , 71957 , 71958 , 71960 , 71989 , 71991 , 71992 , - 71995 , 72003 , 72016 , 72025 , 72096 , 72103 , 72106 , 72151 , - 72154 , 72161 , 72163 , 72164 , 72192 , 72254 , 72263 , 72263 , - 72272 , 72345 , 72349 , 72349 , 72368 , 72440 , 72704 , 72712 , - 72714 , 72758 , 72760 , 72768 , 72784 , 72793 , 72818 , 72847 , - 72850 , 72871 , 72873 , 72886 , 72960 , 72966 , 72968 , 72969 , - 72971 , 73014 , 73018 , 73018 , 73020 , 73021 , 73023 , 73031 , - 73040 , 73049 , 73056 , 73061 , 73063 , 73064 , 73066 , 73102 , - 73104 , 73105 , 73107 , 73112 , 73120 , 73129 , 73440 , 73462 , + 70502 , 70508 , 70512 , 70516 , 70528 , 70537 , 70539 , 70539 , + 70542 , 70542 , 70544 , 70581 , 70583 , 70592 , 70594 , 70594 , + 70597 , 70597 , 70599 , 70602 , 70604 , 70611 , 70625 , 70626 , + 70656 , 70730 , 70736 , 70745 , 70750 , 70753 , 70784 , 70853 , + 70855 , 70855 , 70864 , 70873 , 71040 , 71093 , 71096 , 71104 , + 71128 , 71133 , 71168 , 71232 , 71236 , 71236 , 71248 , 71257 , + 71296 , 71352 , 71360 , 71369 , 71376 , 71395 , 71424 , 71450 , + 71453 , 71467 , 71472 , 71481 , 71488 , 71494 , 71680 , 71738 , + 71840 , 71913 , 71935 , 71942 , 71945 , 71945 , 71948 , 71955 , + 71957 , 71958 , 71960 , 71989 , 71991 , 71992 , 71995 , 72003 , + 72016 , 72025 , 72096 , 72103 , 72106 , 72151 , 72154 , 72161 , + 72163 , 72164 , 72192 , 72254 , 72263 , 72263 , 72272 , 72345 , + 72349 , 72349 , 72368 , 72440 , 72544 , 72551 , 72640 , 72672 , + 72688 , 72697 , 72704 , 72712 , 72714 , 72758 , 72760 , 72768 , + 72784 , 72793 , 72818 , 72847 , 72850 , 72871 , 72873 , 72886 , + 72960 , 72966 , 72968 , 72969 , 72971 , 73014 , 73018 , 73018 , + 73020 , 73021 , 73023 , 73031 , 73040 , 73049 , 73056 , 73061 , + 73063 , 73064 , 73066 , 73102 , 73104 , 73105 , 73107 , 73112 , + 73120 , 73129 , 73136 , 73179 , 73184 , 73193 , 73440 , 73462 , + 73472 , 73488 , 73490 , 73530 , 73534 , 73538 , 73552 , 73562 , 73648 , 73648 , 73728 , 74649 , 74752 , 74862 , 74880 , 75075 , - 77712 , 77808 , 77824 , 78894 , 82944 , 83526 , 92160 , 92728 , - 92736 , 92766 , 92768 , 92777 , 92784 , 92862 , 92864 , 92873 , - 92880 , 92909 , 92912 , 92916 , 92928 , 92982 , 92992 , 92995 , - 93008 , 93017 , 93027 , 93047 , 93053 , 93071 , 93760 , 93823 , - 93952 , 94026 , 94031 , 94087 , 94095 , 94111 , 94176 , 94177 , - 94179 , 94180 , 94192 , 94193 , 94208 , 100343, 100352, 101589, - 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, - 110592, 110882, 110928, 110930, 110948, 110951, 110960, 111355, - 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, - 113821, 113822, 118528, 118573, 118576, 118598, 119141, 119145, - 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, - 119362, 119364, 119808, 119892, 119894, 119964, 119966, 119967, - 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, - 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, - 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, - 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, - 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, - 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, - 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, - 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, - 121499, 121503, 121505, 121519, 122624, 122654, 122880, 122886, - 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, - 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123214, - 123536, 123566, 123584, 123641, 124896, 124902, 124904, 124907, - 124909, 124910, 124912, 124926, 124928, 125124, 125136, 125142, - 125184, 125259, 125264, 125273, 126464, 126467, 126469, 126495, - 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, - 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, - 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, - 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, - 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, - 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, - 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, - 126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, - 131072, 173791, 173824, 177976, 177984, 178205, 178208, 183969, - 183984, 191456, 194560, 195101, 196608, 201546, 917760, 917999, + 77712 , 77808 , 77824 , 78895 , 78912 , 78933 , 78944 , 82938 , + 82944 , 83526 , 90368 , 90425 , 92160 , 92728 , 92736 , 92766 , + 92768 , 92777 , 92784 , 92862 , 92864 , 92873 , 92880 , 92909 , + 92912 , 92916 , 92928 , 92982 , 92992 , 92995 , 93008 , 93017 , + 93027 , 93047 , 93053 , 93071 , 93504 , 93548 , 93552 , 93561 , + 93760 , 93823 , 93856 , 93880 , 93883 , 93907 , 93952 , 94026 , + 94031 , 94087 , 94095 , 94111 , 94176 , 94177 , 94179 , 94180 , + 94192 , 94198 , 94208 , 101589, 101631, 101662, 101760, 101874, + 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, + 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, + 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, + 113808, 113817, 113821, 113822, 118000, 118009, 118528, 118573, + 118576, 118598, 119141, 119145, 119149, 119154, 119163, 119170, + 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892, + 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, + 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, + 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, + 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, + 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, + 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, + 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, + 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, + 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, + 122624, 122654, 122661, 122666, 122880, 122886, 122888, 122904, + 122907, 122913, 122915, 122916, 122918, 122922, 122928, 122989, + 123023, 123023, 123136, 123180, 123184, 123197, 123200, 123209, + 123214, 123214, 123536, 123566, 123584, 123641, 124112, 124153, + 124368, 124410, 124608, 124638, 124640, 124661, 124670, 124671, + 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, + 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273, + 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, + 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, + 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, + 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, + 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, + 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, + 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, + 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, + 126635, 126651, 130032, 130041, 131072, 173791, 173824, 178205, + 178208, 183981, 183984, 191456, 191472, 192093, 194560, 195101, + 196608, 201546, 201552, 210041, 917760, 917999, ]; const unicodeIdentifierPartMin = 170; const unicodeIdentifierPartMax = 917999; From 6fda2203efb6cb381eeef46a243075468c49e9da Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 22 Apr 2026 22:07:08 +0300 Subject: [PATCH 04/21] update typescript and ts config fixes --- package-lock.json | 8 ++++---- package.json | 4 ++-- scripts/build-dts.js | 4 +++- src/tsconfig.json | 1 + tsconfig-base.json | 3 +-- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03f52464f8..bdbe74d21e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "eslint": "^10.2.1", "glob": "^13.0.6", "globals": "^17.5.0", - "typescript": "^5.9.3", + "typescript": "^6.0.3", "typescript-eslint": "^8.59.0" }, "engines": { @@ -1791,9 +1791,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 4c563fcaaa..4bcdc29ccf 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "eslint": "^10.2.1", "glob": "^13.0.6", "globals": "^17.5.0", - "typescript": "^5.9.3", + "typescript": "^6.0.3", "typescript-eslint": "^8.59.0" }, "type": "module", @@ -74,7 +74,7 @@ "scripts": { "check": "npm run check:config && npm run check:import && npm run lint", "check:config": "tsc --noEmit -p src --diagnostics --listFiles", - "check:import": "tsc --noEmit --target ESNEXT --module nodenext --moduleResolution nodenext --experimentalDecorators tests/import/index", + "check:import": "tsc --noEmit --skipLibCheck --target ESNEXT --module nodenext --moduleResolution nodenext --experimentalDecorators tests/import/index", "lint": "eslint --max-warnings 0 --ext js . && eslint --max-warnings 0 --ext ts .", "build": "node scripts/build", "watch": "node scripts/build --watch", diff --git a/scripts/build-dts.js b/scripts/build-dts.js index 0493075824..979db546a9 100644 --- a/scripts/build-dts.js +++ b/scripts/build-dts.js @@ -319,9 +319,11 @@ const prefix = "types:assemblyscript"; export function generateSrc() { const stdout = []; + const pathToSources = pathUtil.resolve(__dirname, "..", "src"); generate({ - project: pathUtil.resolve(__dirname, "..", "src"), + project: pathToSources, + baseDir: pathToSources, prefix, exclude: [ "glue/**", diff --git a/src/tsconfig.json b/src/tsconfig.json index a6acaae80a..f4dbff1903 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../std/portable.json", "compilerOptions": { "target": "esnext", + "rootDir": "..", "outDir": "../build", "allowJs": false, "sourceMap": true, diff --git a/tsconfig-base.json b/tsconfig-base.json index 10a2d884e4..9695cb47c4 100644 --- a/tsconfig-base.json +++ b/tsconfig-base.json @@ -8,7 +8,6 @@ "noEmitOnError": true, "strictNullChecks": true, "experimentalDecorators": true, - "preserveConstEnums": false, - "downlevelIteration": true + "preserveConstEnums": false } } From 240e5149a13bc5962ff9d45f578604fc39c06fdf Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 00:48:29 +0300 Subject: [PATCH 05/21] update glue and module API for new binaryen (WIP) --- src/glue/binaryen.d.ts | 9 ++++--- src/glue/binaryen.js | 44 +++++++++++++++++++++++++----- src/module.ts | 61 +++++++++++++++++++++++++++++++----------- 3 files changed, 89 insertions(+), 25 deletions(-) diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index fdc2bd7492..7da9b076b5 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -18,6 +18,7 @@ export type Op = i32; export type ExternalKind = u32; export type SideEffects = u32; export type ExpressionRunnerFlags = u32; +export type MemoryOrder = u32; export type StringRef = Ref; export type Pointer = Ref; @@ -228,7 +229,7 @@ export declare function _BinaryenLoadSetAlign(expr: ExpressionRef, align: u32): export declare function _BinaryenLoadGetPtr(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenLoadSetPtr(expr: ExpressionRef, ptrExpr: ExpressionRef): void; // ^ with atomic = true -export declare function _BinaryenAtomicLoad(module: ModuleRef, bytes: Index, offset: Index, type: TypeRef, ptrExpr: ExpressionRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicLoad(module: ModuleRef, bytes: Index, offset: Index, type: TypeRef, ptrExpr: ExpressionRef, memoryName: StringRef, memoryOrder: MemoryOrder): ExpressionRef; export declare function _BinaryenStore(module: ModuleRef, bytes: u32, offset: u32, align: u32, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; export declare function _BinaryenStoreIsAtomic(expr: ExpressionRef): bool; @@ -246,7 +247,7 @@ export declare function _BinaryenStoreSetValue(expr: ExpressionRef, valueExpr: E export declare function _BinaryenStoreGetValueType(expr: ExpressionRef): TypeRef; export declare function _BinaryenStoreSetValueType(expr: ExpressionRef, valueType: TypeRef): void; // ^ with atomic = true -export declare function _BinaryenAtomicStore(module: ModuleRef, bytes: Index, offset: Index, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicStore(module: ModuleRef, bytes: Index, offset: Index, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef, memoryOrder: MemoryOrder): ExpressionRef; export declare function _BinaryenConst(module: ModuleRef, value: LiteralRef): ExpressionRef; export declare function _BinaryenConstGetValueI32(expr: ExpressionRef): i32; @@ -296,7 +297,7 @@ export declare function _BinaryenNop(module: ModuleRef): ExpressionRef; export declare function _BinaryenUnreachable(module: ModuleRef): ExpressionRef; -export declare function _BinaryenAtomicRMW(module: ModuleRef, op: Op, bytes: u32, offset: u32, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicRMW(module: ModuleRef, op: Op, bytes: u32, offset: u32, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef, memoryOrder: MemoryOrder): ExpressionRef; export declare function _BinaryenAtomicRMWGetOp(expr: ExpressionRef): Op; export declare function _BinaryenAtomicRMWSetOp(expr: ExpressionRef, op: Op): void; export declare function _BinaryenAtomicRMWGetBytes(expr: ExpressionRef): u32; @@ -308,7 +309,7 @@ export declare function _BinaryenAtomicRMWSetPtr(expr: ExpressionRef, ptrExpr: E export declare function _BinaryenAtomicRMWGetValue(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenAtomicRMWSetValue(expr: ExpressionRef, valueExpr: ExpressionRef): void; -export declare function _BinaryenAtomicCmpxchg(module: ModuleRef, bytes: u32, offset: u32, ptrExpr: ExpressionRef, expectedExpr: ExpressionRef, replacementExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicCmpxchg(module: ModuleRef, bytes: u32, offset: u32, ptrExpr: ExpressionRef, expectedExpr: ExpressionRef, replacementExpr: ExpressionRef, type: TypeRef, memoryName: StringRef, memoryOrder: MemoryOrder): ExpressionRef; export declare function _BinaryenAtomicCmpxchgGetBytes(expr: ExpressionRef): u32; export declare function _BinaryenAtomicCmpxchgSetBytes(expr: ExpressionRef, bytes: u32): void; export declare function _BinaryenAtomicCmpxchgGetOffset(expr: ExpressionRef): u32; diff --git a/src/glue/binaryen.js b/src/glue/binaryen.js index 295afb7635..461bb68cdb 100644 --- a/src/glue/binaryen.js +++ b/src/glue/binaryen.js @@ -60,12 +60,10 @@ export const { _BinaryenSizeofLiteral, _BinaryenLiteralInt32, - _BinaryenLiteralInt64, _BinaryenLiteralFloat32, _BinaryenLiteralFloat64, _BinaryenLiteralVec128, _BinaryenLiteralFloat32Bits, - _BinaryenLiteralFloat64Bits, _BinaryenExpressionGetId, _BinaryenExpressionGetType, @@ -211,10 +209,8 @@ export const { _BinaryenConst, _BinaryenConstGetValueI32, _BinaryenConstSetValueI32, - _BinaryenConstGetValueI64Low, - _BinaryenConstSetValueI64Low, - _BinaryenConstGetValueI64High, - _BinaryenConstSetValueI64High, + _BinaryenConstGetValueI64, + _BinaryenConstSetValueI64, _BinaryenConstGetValueF32, _BinaryenConstSetValueF32, _BinaryenConstGetValueF64, @@ -918,4 +914,40 @@ export const { } = binaryen; +// Shims for C-API functions whose Emscripten binding now uses BigInt for i64 +// parameters (built with -sWASM_BIGINT). AssemblyScript passes i64 values as a +// pair of 32-bit halves, so we pack/unpack BigInt at the boundary. + +const LOW_MASK = 0xFFFFFFFFn; + +function packI64(lo, hi) { + return BigInt.asIntN(64, (BigInt.asIntN(32, BigInt(hi)) << 32n) | (BigInt(lo >>> 0) & LOW_MASK)); +} + +export function _BinaryenLiteralInt64(literalOut, lo, hi) { + return binaryen._BinaryenLiteralInt64(literalOut, packI64(lo, hi)); +} + +export function _BinaryenLiteralFloat64Bits(literalOut, lo, hi) { + return binaryen._BinaryenLiteralFloat64Bits(literalOut, packI64(lo, hi)); +} + +export function _BinaryenConstGetValueI64Low(expr) { + return Number(BigInt.asIntN(32, _BinaryenConstGetValueI64(expr) & LOW_MASK)); +} + +export function _BinaryenConstGetValueI64High(expr) { + return Number(BigInt.asIntN(32, _BinaryenConstGetValueI64(expr) >> 32n)); +} + +export function _BinaryenConstSetValueI64Low(expr, lo) { + const cur = _BinaryenConstGetValueI64(expr); + _BinaryenConstSetValueI64(expr, packI64(lo, Number(BigInt.asIntN(32, cur >> 32n)))); +} + +export function _BinaryenConstSetValueI64High(expr, hi) { + const cur = _BinaryenConstGetValueI64(expr); + _BinaryenConstSetValueI64(expr, packI64(Number(BigInt.asIntN(32, cur & LOW_MASK)), hi)); +} + export default binaryen; diff --git a/src/module.ts b/src/module.ts index 4f10c09c90..d794e09e12 100644 --- a/src/module.ts +++ b/src/module.ts @@ -254,6 +254,7 @@ export const enum ExpressionId { AtomicWait = 26 /* _BinaryenAtomicWaitId */, AtomicNotify = 27 /* _BinaryenAtomicNotifyId */, AtomicFence = 28 /* _BinaryenAtomicFenceId */, + Pause = 29 /* _BinaryenPauseId */, SIMDExtract = 30 /* _BinaryenSIMDExtractId */, SIMDReplace = 31 /* _BinaryenSIMDReplaceId */, SIMDShuffle = 32 /* _BinaryenSIMDShuffleId */, @@ -277,6 +278,7 @@ export const enum ExpressionId { TableFill = 50 /* _BinaryenTableFillId */, TableCopy = 51 /* _BinaryenTableCopyId */, TableInit = 52 /* _BinaryenTableInitId */, + ElemDrop = 53 /* _BinaryenElemDropId */, Try = 54 /* _BinaryenTryId */, TryTable = 55 /* _BinaryenTryTableId */, Throw = 56 /* _BinaryenThrowId */, @@ -302,11 +304,15 @@ export const enum ExpressionId { ArrayNewFixed = 76 /* _BinaryenArrayNewFixedId */, ArrayGet = 77 /* _BinaryenArrayGetId */, ArraySet = 78 /* _BinaryenArraySetId */, + ArrayLoad = 79 /* _BinaryenArrayLoadId */, + ArrayStore = 80 /* _BinaryenArrayStoreId */, ArrayLen = 81 /* _BinaryenArrayLenId */, ArrayCopy = 82 /* _BinaryenArrayCopyId */, ArrayFill = 83 /* _BinaryenArrayFillId */, ArrayInitData = 84 /* _BinaryenArrayInitDataId */, ArrayInitElem = 85 /* _BinaryenArrayInitElemId */, + ArrayRMW = 86 /* _BinaryenArrayRMWId */, + ArrayCmpxchg = 87 /* _BinaryenArrayCmpxchgId */, RefAs = 88 /* _BinaryenRefAsId */, StringNew = 89 /* _BinaryenStringNewId */, StringConst = 90 /* _BinaryenStringConstId */, @@ -314,6 +320,7 @@ export const enum ExpressionId { StringEncode = 92 /* _BinaryenStringEncodeId */, StringConcat = 93 /* _BinaryenStringConcatId */, StringEq = 94 /* _BinaryenStringEqId */, + StringTest = 95 /* _BinaryenStringTestId */, StringWTF16Get = 96 /* _BinaryenStringWTF16GetId */, StringSliceWTF = 97 /* _BinaryenStringSliceWTFId */, ContNew = 98 /* _BinaryenContNewId */, @@ -321,7 +328,9 @@ export const enum ExpressionId { Suspend = 100 /* _BinaryenSuspendId */, Resume = 101 /* _BinaryenResumeId */, ResumeThrow = 102 /* _BinaryenResumeThrowId */, - StackSwitch = 103 /* _BinaryenStackSwitchId */ + StackSwitch = 103 /* _BinaryenStackSwitchId */, + StructWait = 104 /* _BinaryenStructWaitId */, + StructNotify = 105 /* _BinaryenStructNotifyId */ } /** Binaryen external kind constants. */ @@ -333,6 +342,16 @@ export const enum ExternalKind { Tag = 4 /* _BinaryenExternalTag */ } +/** Binaryen memory order constants for atomic operations. */ +export const enum MemoryOrder { + /** Non-atomic access. */ + Unordered = 0 /* _BinaryenMemoryOrderUnordered */, + /** Sequentially consistent atomic memory operation. */ + SeqCst = 1 /* _BinaryenMemoryOrderSeqCst */, + /** Acquire/Release atomic memory operation; acquire for loads, release for stores. */ + AcqRel = 2 /* _BinaryenMemoryOrderAcqRel */ +} + /** Binaryen unary operation constants. */ export const enum UnaryOp { /** i32.clz */ @@ -514,7 +533,7 @@ export const enum UnaryOp { AllTrueI64x2 = 83 /* _BinaryenAllTrueVecI64x2 */, /** i64x2.bitmask */ BitmaskI64x2 = 84 /* _BinaryenBitmaskVecI64x2 */, - // FIXME FIXME FIXME DONT FORGET TODO: F16 (not in C API yet) + // FIXME: f16x8 abs/neg/sqrt/ceil/floor/trunc/nearest (85..91) are in wasm.h but not yet exported via C API /** f32x4.abs */ AbsF32x4 = 92 /* _BinaryenAbsVecF32x4 */, /** f32x4.neg */ @@ -603,8 +622,11 @@ export const enum UnaryOp { RelaxedTruncF64x2ToI32x4Zero = 134 /* _BinaryenRelaxedTruncZeroSVecF64x2ToVecI32x4 */, /** i32x4.relaxed_trunc_f64x2_u_zero */ RelaxedTruncF64x2ToU32x4Zero = 135 /* _BinaryenRelaxedTruncZeroUVecF64x2ToVecI32x4 */, + // FIXME: f16x8 splat/trunc_sat/convert (136..140) are in wasm.h but not yet exported via C API + /** f32x4.promote_low_f16x8 */ + PromoteLowF16x8ToF32x4 = 141 /* _BinaryenPromoteLowVecF16x8ToVecF32x4 */, - _last = RelaxedTruncF64x2ToU32x4Zero, + _last = PromoteLowF16x8ToF32x4, // Target dependent @@ -847,6 +869,7 @@ export const enum BinaryOp { LeI64x2 = 110 /* _BinaryenLeSVecI64x2 */, /** i64x2.ge_s */ GeI64x2 = 111 /* _BinaryenGeSVecI64x2 */, + // FIXME: f16x8 compare ops (eq/ne/lt/gt/le/ge = 112..117) are in wasm.h but not yet exported via C API /** f32x4.eq */ EqF32x4 = 118 /* _BinaryenEqVecF32x4 */, /** f32x4.ne */ @@ -973,6 +996,7 @@ export const enum BinaryOp { ExtmulLowU64x2 = 179 /* _BinaryenExtMulLowUVecI64x2 */, /** i64x2.extmul_high_i32x4_u */ ExtmulHighU64x2 = 180 /* _BinaryenExtMulHighUVecI64x2 */, + // FIXME: f16x8 arithmetic ops (add/sub/mul/div/min/max/pmin/pmax = 181..188) are in wasm.h but not yet exported via C API /** f32x4.add */ AddF32x4 = 189 /* _BinaryenAddVecF32x4 */, /** f32x4.sub */ @@ -1112,13 +1136,14 @@ export const enum SIMDExtractOp { ExtractLaneI16x8 = 2 /* _BinaryenExtractLaneSVecI16x8 */, /** i16x8.extract_lane_u */ ExtractLaneU16x8 = 3 /* _BinaryenExtractLaneUVecI16x8 */, - /** i32x4.extract_lane_s */ + /** i32x4.extract_lane */ ExtractLaneI32x4 = 4 /* _BinaryenExtractLaneVecI32x4 */, - /** i32x4.extract_lane_u */ + /** i64x2.extract_lane */ ExtractLaneI64x2 = 5 /* _BinaryenExtractLaneVecI64x2 */, - /** i64x2.extract_lane_s */ + // FIXME: f16x8.extract_lane (= 6) is in wasm.h but not yet exported via C API + /** f32x4.extract_lane */ ExtractLaneF32x4 = 7 /* _BinaryenExtractLaneVecF32x4 */, - /** i64x2.extract_lane_u */ + /** f64x2.extract_lane */ ExtractLaneF64x2 = 8 /* _BinaryenExtractLaneVecF64x2 */, } @@ -1132,6 +1157,7 @@ export const enum SIMDReplaceOp { ReplaceLaneI32x4 = 2 /* _BinaryenReplaceLaneVecI32x4 */, /** i64x2.replace_lane */ ReplaceLaneI64x2 = 3 /* _BinaryenReplaceLaneVecI64x2 */, + // FIXME: f16x8.replace_lane (= 4) is in wasm.h but not yet exported via C API /** f32x4.replace_lane */ ReplaceLaneF32x4 = 5 /* _BinaryenReplaceLaneVecF32x4 */, /** f64x2.replace_lane */ @@ -1236,6 +1262,7 @@ export const enum SIMDTernaryOp { RelaxedLaneselectI64x2 = 8 /* _BinaryenLaneselectI64x2 */, /** i32x4.relaxed_dot_i8x16_i7x16_add_s */ RelaxedDotI8x16I7x16AddToI32x4 = 9 /* _BinaryenDotI8x16I7x16AddSToVecI32x4 */, + // FIXME: f16x8 madd/nmadd (= 10, 11) are in wasm.h but not yet exported via C API } /** Binaryen RefAs operation constants. */ @@ -1576,10 +1603,11 @@ export class Module { ptr: ExpressionRef, type: TypeRef, offset: Index = 0, - name: string = CommonNames.DefaultMemory + name: string = CommonNames.DefaultMemory, + order: MemoryOrder = MemoryOrder.SeqCst ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicLoad(this.ref, bytes, offset, type, ptr, cStr); + return binaryen._BinaryenAtomicLoad(this.ref, bytes, offset, type, ptr, cStr, order); } atomic_store( @@ -1588,10 +1616,11 @@ export class Module { value: ExpressionRef, type: TypeRef, offset: Index = 0, - name: string = CommonNames.DefaultMemory + name: string = CommonNames.DefaultMemory, + order: MemoryOrder = MemoryOrder.SeqCst ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicStore(this.ref, bytes, offset, ptr, value, type, cStr); + return binaryen._BinaryenAtomicStore(this.ref, bytes, offset, ptr, value, type, cStr, order); } atomic_rmw( @@ -1601,10 +1630,11 @@ export class Module { ptr: ExpressionRef, value: ExpressionRef, type: TypeRef, - name: string = CommonNames.DefaultMemory + name: string = CommonNames.DefaultMemory, + order: MemoryOrder = MemoryOrder.SeqCst ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicRMW(this.ref, op, bytes, offset, ptr, value, type, cStr); + return binaryen._BinaryenAtomicRMW(this.ref, op, bytes, offset, ptr, value, type, cStr, order); } atomic_cmpxchg( @@ -1614,10 +1644,11 @@ export class Module { expected: ExpressionRef, replacement: ExpressionRef, type: TypeRef, - name: string = CommonNames.DefaultMemory + name: string = CommonNames.DefaultMemory, + order: MemoryOrder = MemoryOrder.SeqCst ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicCmpxchg(this.ref, bytes, offset, ptr, expected, replacement, type, cStr); + return binaryen._BinaryenAtomicCmpxchg(this.ref, bytes, offset, ptr, expected, replacement, type, cStr, order); } atomic_wait( From 9f067dbd1de9d31719ccef148638e3193de22271 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 01:26:10 +0300 Subject: [PATCH 06/21] fix memory initialization for binaryen's effect analysis --- src/compiler.ts | 59 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 7e4c3c9c40..68bd070f84 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -534,10 +534,16 @@ export class Compiler extends DiagnosticEmitter { let resolver = this.resolver; let hasShadowStack = options.stackSize > 0; // implies runtime=incremental + // Register a dummy memory so Binaryen's EffectAnalyzer can read + // memory.shared on loads/stores emitted during compilation. The real + // memory is installed by `initDefaultMemory` below, which can't run + // here: it needs `memoryOffset` (known only after data layout) and + // emits diagnostics / exports that must happen exactly once. + this.initDummyMemory(); + // initialize lookup maps, built-ins, imports, exports, etc. this.program.initialize(); - // Binaryen treats all function references as being leaked to the outside world when // the module isn't marked as closed-world (see WebAssembly/binaryen#7135). Therefore, // we should mark the module as closed-world when we're definitely sure it is. @@ -762,6 +768,19 @@ export class Compiler extends DiagnosticEmitter { return module; } + private initDummyMemory(): void { + let options = this.options; + this.module.setMemory( + 0, + Module.UNLIMITED_MEMORY, + [], + options.target, + null, + CommonNames.DefaultMemory, + options.sharedMemory + ); + } + private initDefaultMemory(memoryOffset: i64): void { this.memoryOffset = memoryOffset; @@ -1524,7 +1543,7 @@ export class Compiler extends DiagnosticEmitter { private ensureEnumToString(enumElement: Enum, reportNode: Node): string | null { if (enumElement.toStringFunctionName) return enumElement.toStringFunctionName; - + if (!this.compileEnum(enumElement)) return null; if (enumElement.is(CommonFlags.Const)) { this.errorRelated( @@ -2583,7 +2602,7 @@ export class Compiler extends DiagnosticEmitter { // (then │ │ (body) │ // (?block $continue │ │ if loops: (incrementor) ─────┘ // (body) │ │ recompile body? - // ) ├◄┘ + // ) ├◄┘ // (incrementor) ┌◄┘ // (br $loop) // ) @@ -2872,17 +2891,17 @@ export class Compiler extends DiagnosticEmitter { // Compile the condition (always executes) let condExpr = this.compileExpression(statement.condition, Type.auto); let condType = this.currentType; - + // Shortcut if there are no cases if (!numCases) return module.drop(condExpr); - + // Assign the condition to a temporary local as we compare it multiple times let outerFlow = this.currentFlow; let tempLocal = outerFlow.getTempLocal(condType); let tempLocalIndex = tempLocal.index; let breaks = new Array(1 + numCases); breaks[0] = module.local_set(tempLocalIndex, condExpr, condType.isManaged); - + // Make one br_if per labeled case and leave it to Binaryen to optimize the // sequence of br_ifs to a br_table according to optimization levels let breakIndex = 1; @@ -2894,7 +2913,7 @@ export class Compiler extends DiagnosticEmitter { defaultIndex = i; continue; } - + // Compile the equality expression for this case const left = statement.condition; const leftExpr = module.local_get(tempLocalIndex, condType.toRef()); @@ -2909,7 +2928,7 @@ export class Compiler extends DiagnosticEmitter { condType, statement ); - + // Add it to the list of breaks breaks[breakIndex++] = module.br(`case${i}|${label}`, equalityExpr); } @@ -3863,7 +3882,7 @@ export class Compiler extends DiagnosticEmitter { expression: BinaryExpression, contextualType: Type, ): ExpressionRef { - + const left = expression.left; const leftExpr = this.compileExpression(left, contextualType); const leftType = this.currentType; @@ -3881,9 +3900,9 @@ export class Compiler extends DiagnosticEmitter { ); } - /** + /** * compile `==` `===` `!=` `!==` BinaryExpression, from previously compiled left and right expressions. - * + * * This is split from `compileCommutativeCompareBinaryExpression` so that the logic can be reused * for switch cases in `compileSwitchStatement`, where the left expression only should be compiled once. */ @@ -3901,7 +3920,7 @@ export class Compiler extends DiagnosticEmitter { let module = this.module; let operatorString = operatorTokenToString(operator); - + // check operator overload const operatorKind = OperatorKind.fromBinaryToken(operator); const leftOverload = leftType.lookupOverload(operatorKind, this.program); @@ -3909,7 +3928,7 @@ export class Compiler extends DiagnosticEmitter { if (leftOverload && rightOverload && leftOverload != rightOverload) { this.error( DiagnosticCode.Ambiguous_operator_overload_0_conflicting_overloads_1_and_2, - reportNode.range, + reportNode.range, operatorString, leftOverload.internalName, rightOverload.internalName @@ -3999,7 +4018,7 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpression(left, contextualType); leftType = this.currentType; - + // check operator overload const operatorKind = OperatorKind.fromBinaryToken(operator); const leftOverload = leftType.lookupOverload(operatorKind, this.program); @@ -4070,7 +4089,7 @@ export class Compiler extends DiagnosticEmitter { return this.compileNonCommutativeCompareBinaryExpression(expression, contextualType); } case Token.Equals_Equals_Equals: - case Token.Equals_Equals: + case Token.Equals_Equals: case Token.Exclamation_Equals_Equals: case Token.Exclamation_Equals: { return this.compileCommutativeCompareBinaryExpression(expression, contextualType); @@ -6352,13 +6371,13 @@ export class Compiler extends DiagnosticEmitter { if (numArguments < numParams) { return argumentExpressions; } - + // make an array literal expression from the rest args let elements = argumentExpressions.slice(numParams - 1); let range = new Range(elements[0].range.start, elements[elements.length - 1].range.end); range.source = reportNode.range.source; let arrExpr = new ArrayLiteralExpression(elements, range); - + // return the original args, but replace the rest args with the array const exprs = argumentExpressions.slice(0, numParams - 1); exprs.push(arrExpr); @@ -6622,9 +6641,9 @@ export class Compiler extends DiagnosticEmitter { let initializer = declaration.initializer; let initExpr: ExpressionRef; if (declaration.parameterKind === ParameterKind.Rest) { - const arrExpr = new ArrayLiteralExpression([], declaration.range.atEnd); + const arrExpr = new ArrayLiteralExpression([], declaration.range.atEnd); initExpr = this.compileArrayLiteral(arrExpr, type, Constraints.ConvExplicit); - initExpr = module.local_set(operandIndex, initExpr, type.isManaged); + initExpr = module.local_set(operandIndex, initExpr, type.isManaged); } else if (initializer) { initExpr = this.compileExpression( initializer, @@ -7869,7 +7888,7 @@ export class Compiler extends DiagnosticEmitter { stmts.length = 1; stmts.push( module.i32(1) - ); + ); module.removeFunction(name); module.addFunction(name, sizeType, TypeRef.I32, [ TypeRef.I32 ], module.block(null, stmts, TypeRef.I32)); } From 0b5a09903f084282104fd815b7abbfe0e3501a79 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 01:29:00 +0300 Subject: [PATCH 07/21] update fixtures --- tests/compiler/assignment-chain.release.wat | 9 +- tests/compiler/bindings/esm.release.wat | 9 +- .../bindings/noExportRuntime.release.wat | 9 +- tests/compiler/bindings/raw.release.wat | 9 +- tests/compiler/builtins.release.wat | 5 +- tests/compiler/call-inferred.release.wat | 9 +- tests/compiler/call-rest.release.wat | 9 +- tests/compiler/call-super.release.wat | 9 +- tests/compiler/class-implements.release.wat | 239 +++++++++--------- .../class-overloading-cast.release.wat | 17 +- tests/compiler/class-overloading.release.wat | 89 +++---- tests/compiler/class-override.release.wat | 17 +- tests/compiler/class.release.wat | 9 +- tests/compiler/constructor.release.wat | 9 +- tests/compiler/do.release.wat | 17 +- tests/compiler/duplicate-fields.release.wat | 9 +- .../compiler/empty-exportruntime.release.wat | 9 +- tests/compiler/empty-new.release.wat | 17 +- .../exportstar-rereexport.release.wat | 17 +- .../extends-baseaggregate.release.wat | 9 +- tests/compiler/extends-recursive.release.wat | 9 +- .../compiler/field-initialization.release.wat | 9 +- tests/compiler/field.release.wat | 9 +- tests/compiler/for.release.wat | 17 +- tests/compiler/function-call.release.wat | 17 +- .../compiler/function-expression.release.wat | 17 +- tests/compiler/getter-call.release.wat | 17 +- tests/compiler/heap.release.wat | 9 +- .../incremental-gc/call-indirect.release.wat | 9 +- tests/compiler/infer-array.release.wat | 9 +- tests/compiler/infer-generic.release.wat | 9 +- tests/compiler/inlining.release.wat | 9 +- tests/compiler/instanceof.release.wat | 17 +- tests/compiler/issues/1095.release.wat | 9 +- tests/compiler/issues/1225.release.wat | 17 +- tests/compiler/issues/1699.release.wat | 9 +- tests/compiler/issues/2166.release.wat | 17 +- tests/compiler/issues/2322/index.release.wat | 9 +- tests/compiler/issues/2622.release.wat | 17 +- tests/compiler/issues/2707.release.wat | 17 +- tests/compiler/issues/2873.release.wat | 9 +- tests/compiler/logical.release.wat | 17 +- tests/compiler/managed-cast.release.wat | 17 +- tests/compiler/new.release.wat | 17 +- tests/compiler/number.release.wat | 54 ++-- tests/compiler/object-literal.release.wat | 9 +- ...perator-overload-non-ambiguity.release.wat | 17 +- .../optional-typeparameters.release.wat | 17 +- tests/compiler/reexport.release.wat | 17 +- tests/compiler/rereexport.release.wat | 17 +- tests/compiler/resolve-access.release.wat | 9 +- tests/compiler/resolve-binary.release.wat | 9 +- .../resolve-elementaccess.release.wat | 9 +- .../resolve-function-expression.release.wat | 9 +- tests/compiler/resolve-new.release.wat | 17 +- .../resolve-propertyaccess.release.wat | 9 +- tests/compiler/resolve-ternary.release.wat | 82 +++--- tests/compiler/resolve-unary.release.wat | 9 +- tests/compiler/return-unreachable.release.wat | 9 +- .../rt/alloc-large-memory.release.wat | 9 +- tests/compiler/rt/finalize.release.wat | 17 +- tests/compiler/rt/issue-2719.release.wat | 9 +- .../rt/runtime-incremental-export.release.wat | 9 +- .../rt/runtime-minimal-export.release.wat | 9 +- .../rt/runtime-stub-export.release.wat | 29 +-- tests/compiler/simd.release.wat | 9 +- tests/compiler/std/array-literal.release.wat | 9 +- tests/compiler/std/array.release.wat | 9 +- tests/compiler/std/arraybuffer.release.wat | 9 +- tests/compiler/std/dataview.release.wat | 9 +- tests/compiler/std/date.release.wat | 9 +- tests/compiler/std/map.release.wat | 9 +- tests/compiler/std/math.release.wat | 132 +++++----- tests/compiler/std/new.release.wat | 17 +- .../std/operator-overloading.release.wat | 17 +- tests/compiler/std/set.release.wat | 9 +- tests/compiler/std/static-array.release.wat | 9 +- tests/compiler/std/staticarray.release.wat | 17 +- .../std/string-casemapping.release.wat | 9 +- .../compiler/std/string-encoding.release.wat | 9 +- tests/compiler/std/string.release.wat | 9 +- tests/compiler/std/symbol.release.wat | 9 +- tests/compiler/std/typedarray.release.wat | 9 +- tests/compiler/std/uri.release.wat | 9 +- tests/compiler/super-inline.release.wat | 17 +- tests/compiler/switch.release.wat | 9 +- tests/compiler/templateliteral.release.wat | 9 +- tests/compiler/throw.release.wat | 2 - tests/compiler/typeof.release.wat | 17 +- tests/compiler/unary.release.wat | 2 - tests/compiler/while.release.wat | 17 +- 91 files changed, 824 insertions(+), 780 deletions(-) diff --git a/tests/compiler/assignment-chain.release.wat b/tests/compiler/assignment-chain.release.wat index 0200dad357..f8c5311e9e 100644 --- a/tests/compiler/assignment-chain.release.wat +++ b/tests/compiler/assignment-chain.release.wat @@ -1308,8 +1308,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1337,7 +1335,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1351,7 +1350,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat index 09936b2aba..4e290228d0 100644 --- a/tests/compiler/bindings/esm.release.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -1428,8 +1428,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1457,7 +1455,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1471,7 +1470,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/bindings/noExportRuntime.release.wat b/tests/compiler/bindings/noExportRuntime.release.wat index 9a784f3d63..db259e3e71 100644 --- a/tests/compiler/bindings/noExportRuntime.release.wat +++ b/tests/compiler/bindings/noExportRuntime.release.wat @@ -1361,8 +1361,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1390,7 +1388,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1404,7 +1403,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat index dcd117d596..63fdd8c27a 100644 --- a/tests/compiler/bindings/raw.release.wat +++ b/tests/compiler/bindings/raw.release.wat @@ -1428,8 +1428,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1457,7 +1455,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1471,7 +1470,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/builtins.release.wat b/tests/compiler/builtins.release.wat index a22c2024c1..b10096a932 100644 --- a/tests/compiler/builtins.release.wat +++ b/tests/compiler/builtins.release.wat @@ -78,6 +78,7 @@ (func $start:builtins~anonymous|1 ) (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + unreachable ) (func $~start call $start:builtins @@ -596,13 +597,9 @@ global.set $builtins/I f64.const 1.24e-322 global.set $builtins/F - memory.size - drop i32.const 1 memory.grow drop - memory.size - drop i32.const 1 memory.grow drop diff --git a/tests/compiler/call-inferred.release.wat b/tests/compiler/call-inferred.release.wat index bbbd16397b..da1bbfa46e 100644 --- a/tests/compiler/call-inferred.release.wat +++ b/tests/compiler/call-inferred.release.wat @@ -1304,8 +1304,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1333,7 +1331,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1347,7 +1346,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/call-rest.release.wat b/tests/compiler/call-rest.release.wat index d1710e2690..8ba815046e 100644 --- a/tests/compiler/call-rest.release.wat +++ b/tests/compiler/call-rest.release.wat @@ -1352,8 +1352,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1381,7 +1379,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1395,7 +1394,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/call-super.release.wat b/tests/compiler/call-super.release.wat index 0c67fa96d2..5d0103b461 100644 --- a/tests/compiler/call-super.release.wat +++ b/tests/compiler/call-super.release.wat @@ -1304,8 +1304,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1333,7 +1331,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1347,7 +1346,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/class-implements.release.wat b/tests/compiler/class-implements.release.wat index 405b45c818..7fb0b1217b 100644 --- a/tests/compiler/class-implements.release.wat +++ b/tests/compiler/class-implements.release.wat @@ -1353,8 +1353,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1382,7 +1380,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1396,7 +1395,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1569,31 +1570,29 @@ local.get $1 ) (func $class-implements/I2#get:foo@override (param $0 i32) (result i32) - block $default - block $case5 - block $case4 - block $case3 - block $case2 - block $case1 - block $case0 + block $case5 + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + block $tablify|0 local.get $0 i32.const 8 i32.sub i32.load i32.const 14 i32.sub - br_table $case4 $default $case0 $case1 $case5 $case2 $case3 $default + br_table $case4 $tablify|0 $case0 $case1 $case5 $case2 $case3 $tablify|0 end - local.get $0 - i32.load - return + unreachable end local.get $0 i32.load return end local.get $0 - call $class-implements/B3#get:foo + i32.load return end local.get $0 @@ -1601,70 +1600,71 @@ return end local.get $0 - i32.load + call $class-implements/B3#get:foo return end local.get $0 - call $class-implements/B2#get:foo + i32.load return end - unreachable + local.get $0 + call $class-implements/B2#get:foo ) (func $class-implements/I2#set:foo@override (param $0 i32) (param $1 i32) block $folding-inner0 - block $default - block $case5 - block $case3 - block $case2 + block $case5 + block $case3 + block $case2 + block $tablify|0 local.get $0 i32.const 8 i32.sub i32.load i32.const 14 i32.sub - br_table $folding-inner0 $default $folding-inner0 $folding-inner0 $case5 $case2 $case3 $default + br_table $folding-inner0 $tablify|0 $folding-inner0 $folding-inner0 $case5 $case2 $case3 $tablify|0 end - local.get $0 - local.get $1 - call $class-implements/B3#set:foo - return + unreachable end local.get $0 local.get $1 call $class-implements/B3#set:foo return 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 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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.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 + call $class-implements/B3#set:foo return end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + 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.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 + return end local.get $0 local.get $1 @@ -2285,43 +2285,37 @@ end call $class-implements/F#constructor global.set $class-implements/h - global.get $~lib/memory/__stack_pointer - global.get $class-implements/h - local.tee $0 - i32.store - block $__inlined_func$class-implements/I#foo@override$167 - block $default12 - block $case3 - block $case2 - block $case1 - block $case013 + block $__inlined_func$class-implements/I#foo@override$167 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $class-implements/h + local.tee $0 + i32.store + block $case3 + block $case2 + block $case1 + block $case013 + block $tablify|0 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case1 $default12 $case2 $default12 $case3 $default12 $case3 $case013 $default12 + br_table $case1 $tablify|0 $case2 $tablify|0 $case3 $tablify|0 $case3 $case013 $tablify|0 end - i32.const 4 - local.set $0 - br $__inlined_func$class-implements/I#foo@override$167 + unreachable end - i32.const 1 - local.set $0 + i32.const 4 br $__inlined_func$class-implements/I#foo@override$167 end - i32.const 2 - local.set $0 + i32.const 1 br $__inlined_func$class-implements/I#foo@override$167 end - i32.const 3 - local.set $0 + i32.const 2 br $__inlined_func$class-implements/I#foo@override$167 end - unreachable + i32.const 3 end - local.get $0 i32.const 4 i32.ne if @@ -2332,69 +2326,64 @@ 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 1592 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$class-implements/J#foo@override$169 - block $default14 - block $case315 - block $case216 - block $case117 - block $case018 + block $__inlined_func$class-implements/J#foo@override$169 (result 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 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $case315 + block $case216 + block $case117 + block $case018 + block $tablify|00 local.get $0 i32.const 8 i32.sub i32.load i32.const 8 i32.sub - br_table $case216 $default14 $case216 $case117 $case315 $case018 $default14 + br_table $case216 $tablify|00 $case216 $case117 $case315 $case018 $tablify|00 end unreachable end - i32.const 4 - local.set $0 - br $__inlined_func$class-implements/J#foo@override$169 + unreachable end - i32.const 3 - local.set $0 + i32.const 4 br $__inlined_func$class-implements/J#foo@override$169 end - i32.const 1 - local.set $0 + i32.const 3 br $__inlined_func$class-implements/J#foo@override$169 end - unreachable + i32.const 1 end - local.get $0 i32.const 1 i32.ne if diff --git a/tests/compiler/class-overloading-cast.release.wat b/tests/compiler/class-overloading-cast.release.wat index d40d976f0e..240da0e02d 100644 --- a/tests/compiler/class-overloading-cast.release.wat +++ b/tests/compiler/class-overloading-cast.release.wat @@ -1141,12 +1141,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1157,9 +1157,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1228,12 +1228,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1246,7 +1245,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/class-overloading.release.wat b/tests/compiler/class-overloading.release.wat index 02caf42072..722d82f3b5 100644 --- a/tests/compiler/class-overloading.release.wat +++ b/tests/compiler/class-overloading.release.wat @@ -1163,12 +1163,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1179,9 +1179,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1250,12 +1250,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1268,7 +1267,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -2825,31 +2826,27 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/IA#foo@override$168 - block $default88 - block $case189 + block $case189 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 11 + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 11 - i32.ne - if - local.get $0 - i32.const 13 - i32.eq - br_if $case189 - br $default88 - end - i32.const 1680 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$168 + i32.const 13 + i32.eq + br_if $case189 + unreachable end - i32.const 1712 + i32.const 1680 global.set $class-overloading/which br $__inlined_func$class-overloading/IA#foo@override$168 end - unreachable + i32.const 1712 + global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer global.get $class-overloading/which @@ -2904,31 +2901,27 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/IA#foo@override$170 - block $default91 - block $case192 + block $case192 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 11 + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 11 - i32.ne - if - local.get $0 - i32.const 13 - i32.eq - br_if $case192 - br $default91 - end - i32.const 1680 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$170 + i32.const 13 + i32.eq + br_if $case192 + unreachable end - i32.const 1712 + i32.const 1680 global.set $class-overloading/which br $__inlined_func$class-overloading/IA#foo@override$170 end - unreachable + i32.const 1712 + global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer global.get $class-overloading/which diff --git a/tests/compiler/class-override.release.wat b/tests/compiler/class-override.release.wat index b1418a45d3..587daa5dde 100644 --- a/tests/compiler/class-override.release.wat +++ b/tests/compiler/class-override.release.wat @@ -1112,12 +1112,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1128,9 +1128,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1199,12 +1199,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1217,7 +1216,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index 992b686367..e983247165 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -1314,8 +1314,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1343,7 +1341,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1357,7 +1356,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/constructor.release.wat b/tests/compiler/constructor.release.wat index bf036d6c77..eb94f0830f 100644 --- a/tests/compiler/constructor.release.wat +++ b/tests/compiler/constructor.release.wat @@ -1367,8 +1367,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1396,7 +1394,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1410,7 +1409,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/do.release.wat b/tests/compiler/do.release.wat index 1b1313c49a..2d8afef373 100644 --- a/tests/compiler/do.release.wat +++ b/tests/compiler/do.release.wat @@ -1103,12 +1103,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1119,9 +1119,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1190,12 +1190,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1207,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/duplicate-fields.release.wat b/tests/compiler/duplicate-fields.release.wat index 100107f6b6..8091252b0e 100644 --- a/tests/compiler/duplicate-fields.release.wat +++ b/tests/compiler/duplicate-fields.release.wat @@ -1321,8 +1321,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1350,7 +1348,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1364,7 +1363,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/empty-exportruntime.release.wat b/tests/compiler/empty-exportruntime.release.wat index 605d4f43c8..9e2243adaf 100644 --- a/tests/compiler/empty-exportruntime.release.wat +++ b/tests/compiler/empty-exportruntime.release.wat @@ -1322,8 +1322,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1351,7 +1349,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1365,7 +1364,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/empty-new.release.wat b/tests/compiler/empty-new.release.wat index 21625b2ae4..3877702b8f 100644 --- a/tests/compiler/empty-new.release.wat +++ b/tests/compiler/empty-new.release.wat @@ -1100,12 +1100,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1116,9 +1116,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1187,12 +1187,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1205,7 +1204,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/exportstar-rereexport.release.wat b/tests/compiler/exportstar-rereexport.release.wat index fbd6f1e267..09cda27fcd 100644 --- a/tests/compiler/exportstar-rereexport.release.wat +++ b/tests/compiler/exportstar-rereexport.release.wat @@ -1134,12 +1134,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1150,9 +1150,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1221,12 +1221,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1239,7 +1238,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/extends-baseaggregate.release.wat b/tests/compiler/extends-baseaggregate.release.wat index 280a9a62c3..a4d261ac2c 100644 --- a/tests/compiler/extends-baseaggregate.release.wat +++ b/tests/compiler/extends-baseaggregate.release.wat @@ -1325,8 +1325,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1354,7 +1352,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1368,7 +1367,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/extends-recursive.release.wat b/tests/compiler/extends-recursive.release.wat index b00fbf4cd8..f6609aee11 100644 --- a/tests/compiler/extends-recursive.release.wat +++ b/tests/compiler/extends-recursive.release.wat @@ -1301,8 +1301,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1330,7 +1328,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1344,7 +1343,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/field-initialization.release.wat b/tests/compiler/field-initialization.release.wat index 6f87390f7f..2c9e66006c 100644 --- a/tests/compiler/field-initialization.release.wat +++ b/tests/compiler/field-initialization.release.wat @@ -1325,8 +1325,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1354,7 +1352,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1368,7 +1367,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/field.release.wat b/tests/compiler/field.release.wat index 415b3934d5..261f97f09c 100644 --- a/tests/compiler/field.release.wat +++ b/tests/compiler/field.release.wat @@ -1308,8 +1308,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1337,7 +1335,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1351,7 +1350,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/for.release.wat b/tests/compiler/for.release.wat index 4f07612e6c..ca1402923b 100644 --- a/tests/compiler/for.release.wat +++ b/tests/compiler/for.release.wat @@ -1103,12 +1103,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1119,9 +1119,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1190,12 +1190,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1207,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/function-call.release.wat b/tests/compiler/function-call.release.wat index fa80a471b8..70c6d33f25 100644 --- a/tests/compiler/function-call.release.wat +++ b/tests/compiler/function-call.release.wat @@ -1141,12 +1141,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1157,9 +1157,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1228,12 +1228,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1246,7 +1245,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/function-expression.release.wat b/tests/compiler/function-expression.release.wat index 9272f39796..b0f7aeb1d8 100644 --- a/tests/compiler/function-expression.release.wat +++ b/tests/compiler/function-expression.release.wat @@ -1171,12 +1171,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1187,9 +1187,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1258,12 +1258,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1276,7 +1275,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/getter-call.release.wat b/tests/compiler/getter-call.release.wat index b31fd6bd03..29a2cdc6e9 100644 --- a/tests/compiler/getter-call.release.wat +++ b/tests/compiler/getter-call.release.wat @@ -1106,12 +1106,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1122,9 +1122,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1193,12 +1193,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1211,7 +1210,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/heap.release.wat b/tests/compiler/heap.release.wat index 14a0518c9b..c3ebb5261b 100644 --- a/tests/compiler/heap.release.wat +++ b/tests/compiler/heap.release.wat @@ -840,8 +840,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $3 local.get $2 i32.const 256 i32.ge_u @@ -869,7 +867,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $3 + memory.size + local.tee $3 i32.const 16 i32.shl i32.const 4 @@ -883,7 +882,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.set $1 + local.get $3 + local.get $1 local.get $1 local.get $3 i32.lt_s diff --git a/tests/compiler/incremental-gc/call-indirect.release.wat b/tests/compiler/incremental-gc/call-indirect.release.wat index 709def24e2..341dd11ee9 100644 --- a/tests/compiler/incremental-gc/call-indirect.release.wat +++ b/tests/compiler/incremental-gc/call-indirect.release.wat @@ -1309,8 +1309,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1338,7 +1336,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1352,7 +1351,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/infer-array.release.wat b/tests/compiler/infer-array.release.wat index 07fd25eb5e..0203c65137 100644 --- a/tests/compiler/infer-array.release.wat +++ b/tests/compiler/infer-array.release.wat @@ -1347,8 +1347,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1376,7 +1374,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1390,7 +1389,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/infer-generic.release.wat b/tests/compiler/infer-generic.release.wat index bfd2ec7d06..568ce764e2 100644 --- a/tests/compiler/infer-generic.release.wat +++ b/tests/compiler/infer-generic.release.wat @@ -1330,8 +1330,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1359,7 +1357,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1373,7 +1372,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat index d8a449feae..be99a766a3 100644 --- a/tests/compiler/inlining.release.wat +++ b/tests/compiler/inlining.release.wat @@ -1320,8 +1320,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1349,7 +1347,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1363,7 +1362,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/instanceof.release.wat b/tests/compiler/instanceof.release.wat index bdbf1e3b54..c6c53402ac 100644 --- a/tests/compiler/instanceof.release.wat +++ b/tests/compiler/instanceof.release.wat @@ -1208,12 +1208,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1224,9 +1224,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1295,12 +1295,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1313,7 +1312,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/1095.release.wat b/tests/compiler/issues/1095.release.wat index b5ae2294e0..f79ddedb7a 100644 --- a/tests/compiler/issues/1095.release.wat +++ b/tests/compiler/issues/1095.release.wat @@ -1311,8 +1311,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1340,7 +1338,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1354,7 +1353,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/1225.release.wat b/tests/compiler/issues/1225.release.wat index 10fcd3691c..4619ad6ae6 100644 --- a/tests/compiler/issues/1225.release.wat +++ b/tests/compiler/issues/1225.release.wat @@ -1112,12 +1112,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1128,9 +1128,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1199,12 +1199,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1217,7 +1216,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/issues/1699.release.wat b/tests/compiler/issues/1699.release.wat index 0ba5679b98..eb9e11fbf9 100644 --- a/tests/compiler/issues/1699.release.wat +++ b/tests/compiler/issues/1699.release.wat @@ -1318,8 +1318,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1347,7 +1345,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1361,7 +1360,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2166.release.wat b/tests/compiler/issues/2166.release.wat index d445b2d6cd..62cde8edc5 100644 --- a/tests/compiler/issues/2166.release.wat +++ b/tests/compiler/issues/2166.release.wat @@ -1112,12 +1112,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1128,9 +1128,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1199,12 +1199,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1217,7 +1216,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2322/index.release.wat b/tests/compiler/issues/2322/index.release.wat index 026f2c493b..4128d19d5c 100644 --- a/tests/compiler/issues/2322/index.release.wat +++ b/tests/compiler/issues/2322/index.release.wat @@ -1302,8 +1302,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1331,7 +1329,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1345,7 +1344,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2622.release.wat b/tests/compiler/issues/2622.release.wat index 885743588e..047af1aebe 100644 --- a/tests/compiler/issues/2622.release.wat +++ b/tests/compiler/issues/2622.release.wat @@ -1141,12 +1141,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1157,9 +1157,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1228,12 +1228,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1246,7 +1245,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2707.release.wat b/tests/compiler/issues/2707.release.wat index 980e20a05d..607bfb186c 100644 --- a/tests/compiler/issues/2707.release.wat +++ b/tests/compiler/issues/2707.release.wat @@ -1114,12 +1114,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1130,9 +1130,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1201,12 +1201,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1219,7 +1218,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2873.release.wat b/tests/compiler/issues/2873.release.wat index 7cc4d874f8..c4ea92c08e 100644 --- a/tests/compiler/issues/2873.release.wat +++ b/tests/compiler/issues/2873.release.wat @@ -2521,8 +2521,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $4 i32.const 256 i32.ge_u @@ -2550,7 +2548,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -2564,7 +2563,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/logical.release.wat b/tests/compiler/logical.release.wat index 5147bdfca1..4b89f7fef8 100644 --- a/tests/compiler/logical.release.wat +++ b/tests/compiler/logical.release.wat @@ -1125,12 +1125,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1141,9 +1141,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1212,12 +1212,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1230,7 +1229,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/managed-cast.release.wat b/tests/compiler/managed-cast.release.wat index 62f92354e5..9bffd1f543 100644 --- a/tests/compiler/managed-cast.release.wat +++ b/tests/compiler/managed-cast.release.wat @@ -1107,12 +1107,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1123,9 +1123,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1194,12 +1194,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1212,7 +1211,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/new.release.wat b/tests/compiler/new.release.wat index af7e02c097..79b25886d8 100644 --- a/tests/compiler/new.release.wat +++ b/tests/compiler/new.release.wat @@ -1143,12 +1143,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1159,9 +1159,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1230,12 +1230,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1248,7 +1247,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/number.release.wat b/tests/compiler/number.release.wat index 5fbdeb3b8b..6c756f828a 100644 --- a/tests/compiler/number.release.wat +++ b/tests/compiler/number.release.wat @@ -1352,8 +1352,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $4 i32.const 256 i32.ge_u @@ -1381,7 +1379,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1395,7 +1394,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s @@ -2726,11 +2727,10 @@ (func $start:number (local $0 i32) (local $1 i64) - (local $2 f64) + (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) - (local $6 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2813,33 +2813,33 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $1 i64.const 4294967295 i64.and - local.tee $4 + local.tee $2 i64.const 31 i64.shl - local.get $4 + local.get $2 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.set $1 - local.get $3 + local.set $3 + local.get $1 i64.const 32 i64.shr_u - local.tee $3 + local.tee $4 i64.const 31 i64.shl - local.get $4 + local.get $2 i64.const 31 i64.shl - local.tee $5 + local.tee $1 i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $1 i64.const 4294967295 i64.and i64.const 2147483647 @@ -2847,17 +2847,17 @@ i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $4 i64.const 31 i64.shl - local.get $1 + local.get $3 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $3 i64.const 4294967295 i64.and - local.get $3 + local.get $4 i64.const 10 i64.shl i64.add @@ -2873,13 +2873,13 @@ i32.const 2 i32.add local.get $1 - local.get $3 + local.get $4 i64.const 2147483647 i64.mul - local.get $4 + local.get $2 i64.const 2147483647 i64.mul - local.get $4 + local.get $2 i64.const 4294966784 i64.mul i64.const 32 @@ -2889,7 +2889,7 @@ i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $4 i64.const 4294966784 i64.mul local.get $1 @@ -2909,15 +2909,15 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 call $~lib/rt/itcms/__new local.tee $0 i32.store local.get $0 i32.const 3456 - local.get $6 + local.get $5 memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/object-literal.release.wat b/tests/compiler/object-literal.release.wat index e1bb4a66e6..53f67c6860 100644 --- a/tests/compiler/object-literal.release.wat +++ b/tests/compiler/object-literal.release.wat @@ -1318,8 +1318,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1347,7 +1345,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1361,7 +1360,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/operator-overload-non-ambiguity.release.wat b/tests/compiler/operator-overload-non-ambiguity.release.wat index 177a9d0d5c..11cabd7d40 100644 --- a/tests/compiler/operator-overload-non-ambiguity.release.wat +++ b/tests/compiler/operator-overload-non-ambiguity.release.wat @@ -1103,12 +1103,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1119,9 +1119,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1190,12 +1190,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1207,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/optional-typeparameters.release.wat b/tests/compiler/optional-typeparameters.release.wat index 86224fcc4c..e483a38001 100644 --- a/tests/compiler/optional-typeparameters.release.wat +++ b/tests/compiler/optional-typeparameters.release.wat @@ -1129,12 +1129,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1145,9 +1145,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1216,12 +1216,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1234,7 +1233,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/reexport.release.wat b/tests/compiler/reexport.release.wat index a96b58bb2b..4bc03e65fc 100644 --- a/tests/compiler/reexport.release.wat +++ b/tests/compiler/reexport.release.wat @@ -1136,12 +1136,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1152,9 +1152,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1223,12 +1223,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1241,7 +1240,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/rereexport.release.wat b/tests/compiler/rereexport.release.wat index f61fba72ac..5a5feb5a82 100644 --- a/tests/compiler/rereexport.release.wat +++ b/tests/compiler/rereexport.release.wat @@ -1134,12 +1134,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1150,9 +1150,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1221,12 +1221,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1239,7 +1238,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/resolve-access.release.wat b/tests/compiler/resolve-access.release.wat index bc5cd261d7..b19813aed5 100644 --- a/tests/compiler/resolve-access.release.wat +++ b/tests/compiler/resolve-access.release.wat @@ -1329,8 +1329,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1358,7 +1356,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1372,7 +1371,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-binary.release.wat b/tests/compiler/resolve-binary.release.wat index d7685c983c..d3b598c887 100644 --- a/tests/compiler/resolve-binary.release.wat +++ b/tests/compiler/resolve-binary.release.wat @@ -1534,8 +1534,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1563,7 +1561,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1577,7 +1576,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-elementaccess.release.wat b/tests/compiler/resolve-elementaccess.release.wat index bc80e8c9b3..482d448e6c 100644 --- a/tests/compiler/resolve-elementaccess.release.wat +++ b/tests/compiler/resolve-elementaccess.release.wat @@ -1381,8 +1381,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1410,7 +1408,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1424,7 +1423,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-function-expression.release.wat b/tests/compiler/resolve-function-expression.release.wat index 82fe5bde30..c3fbeb042f 100644 --- a/tests/compiler/resolve-function-expression.release.wat +++ b/tests/compiler/resolve-function-expression.release.wat @@ -1441,8 +1441,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $8 i32.const 256 i32.ge_u @@ -1470,7 +1468,8 @@ i32.const 4 local.get $7 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1484,7 +1483,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.set $4 + local.get $2 + local.get $4 local.get $2 local.get $4 i32.gt_s diff --git a/tests/compiler/resolve-new.release.wat b/tests/compiler/resolve-new.release.wat index 2a19017969..e783565632 100644 --- a/tests/compiler/resolve-new.release.wat +++ b/tests/compiler/resolve-new.release.wat @@ -1108,12 +1108,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1124,9 +1124,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1195,12 +1195,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1213,7 +1212,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-propertyaccess.release.wat b/tests/compiler/resolve-propertyaccess.release.wat index 9ac4eb9778..e3c45c7b52 100644 --- a/tests/compiler/resolve-propertyaccess.release.wat +++ b/tests/compiler/resolve-propertyaccess.release.wat @@ -1343,8 +1343,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1372,7 +1370,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1386,7 +1385,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat index 91b5b3d064..26ecc20cf0 100644 --- a/tests/compiler/resolve-ternary.release.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -1349,8 +1349,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $4 i32.const 256 i32.ge_u @@ -1378,7 +1376,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1392,7 +1391,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s @@ -2480,13 +2481,12 @@ unreachable ) (func $~start - (local $0 i32) - (local $1 i64) - (local $2 f64) + (local $0 i64) + (local $1 i32) + (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) - (local $6 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2545,9 +2545,9 @@ global.get $~lib/memory/__stack_pointer i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/util/number/utoa32_dec_lut @@ -2556,9 +2556,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 3232 call $~lib/string/String.__eq i32.eqz @@ -2590,33 +2590,33 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $0 i64.const 4294967295 i64.and - local.tee $4 + local.tee $2 i64.const 31 i64.shl - local.get $4 + local.get $2 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.set $1 - local.get $3 + local.set $3 + local.get $0 i64.const 32 i64.shr_u - local.tee $3 + local.tee $4 i64.const 31 i64.shl - local.get $4 + local.get $2 i64.const 31 i64.shl - local.tee $5 + local.tee $0 i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $0 i64.const 4294967295 i64.and i64.const 2147483647 @@ -2624,17 +2624,17 @@ i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $4 i64.const 31 i64.shl - local.get $1 + local.get $3 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $3 i64.const 4294967295 i64.and - local.get $3 + local.get $4 i64.const 10 i64.shl i64.add @@ -2645,31 +2645,31 @@ i64.add i64.const 1 i64.sub - local.tee $1 + local.tee $0 global.get $~lib/util/number/_exp_pow i32.const 1 i32.add - local.get $1 - local.get $3 + local.get $0 + local.get $4 i64.const 2147483647 i64.mul - local.get $4 + local.get $2 i64.const 2147483647 i64.mul - local.get $4 + local.get $2 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $0 i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $4 i64.const 4294966784 i64.mul - local.get $1 + local.get $0 i64.const 4294967295 i64.and i64.add @@ -2686,24 +2686,24 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 3472 - local.get $6 + local.get $5 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 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 4464 call $~lib/string/String.__eq i32.eqz diff --git a/tests/compiler/resolve-unary.release.wat b/tests/compiler/resolve-unary.release.wat index b2115a2271..62ac9cd5ff 100644 --- a/tests/compiler/resolve-unary.release.wat +++ b/tests/compiler/resolve-unary.release.wat @@ -1369,8 +1369,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1398,7 +1396,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1412,7 +1411,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/return-unreachable.release.wat b/tests/compiler/return-unreachable.release.wat index df64ee697c..73a0991de9 100644 --- a/tests/compiler/return-unreachable.release.wat +++ b/tests/compiler/return-unreachable.release.wat @@ -1313,8 +1313,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1342,7 +1340,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1356,7 +1355,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/alloc-large-memory.release.wat b/tests/compiler/rt/alloc-large-memory.release.wat index 7430833f99..39974839b1 100644 --- a/tests/compiler/rt/alloc-large-memory.release.wat +++ b/tests/compiler/rt/alloc-large-memory.release.wat @@ -766,8 +766,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $0 i32.const 256 i32.ge_u @@ -795,7 +793,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -809,7 +808,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/rt/finalize.release.wat b/tests/compiler/rt/finalize.release.wat index 5d8331afd3..572e54bcb1 100644 --- a/tests/compiler/rt/finalize.release.wat +++ b/tests/compiler/rt/finalize.release.wat @@ -1121,12 +1121,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1137,9 +1137,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1208,12 +1208,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1226,7 +1225,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/issue-2719.release.wat b/tests/compiler/rt/issue-2719.release.wat index 0665cfc0ef..04f4fe56f4 100644 --- a/tests/compiler/rt/issue-2719.release.wat +++ b/tests/compiler/rt/issue-2719.release.wat @@ -1303,8 +1303,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1332,7 +1330,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1346,7 +1345,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/runtime-incremental-export.release.wat b/tests/compiler/rt/runtime-incremental-export.release.wat index 605d4f43c8..9e2243adaf 100644 --- a/tests/compiler/rt/runtime-incremental-export.release.wat +++ b/tests/compiler/rt/runtime-incremental-export.release.wat @@ -1322,8 +1322,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1351,7 +1349,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1365,7 +1364,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/runtime-minimal-export.release.wat b/tests/compiler/rt/runtime-minimal-export.release.wat index bbaf5cc296..01af59efdc 100644 --- a/tests/compiler/rt/runtime-minimal-export.release.wat +++ b/tests/compiler/rt/runtime-minimal-export.release.wat @@ -805,8 +805,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -834,7 +832,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -848,7 +847,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/runtime-stub-export.release.wat b/tests/compiler/rt/runtime-stub-export.release.wat index 49d2915a10..87a8d00073 100644 --- a/tests/compiler/rt/runtime-stub-export.release.wat +++ b/tests/compiler/rt/runtime-stub-export.release.wat @@ -26,7 +26,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $0 i32.const 1073741804 i32.gt_u @@ -41,7 +40,7 @@ local.get $0 i32.const 16 i32.add - local.tee $4 + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -53,34 +52,33 @@ unreachable end global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset i32.const 4 i32.add local.tee $2 - local.get $4 + local.get $3 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $4 + local.tee $3 i32.add - local.tee $5 + local.tee $4 memory.size - local.tee $6 + local.tee $5 i32.const 16 i32.shl i32.const 15 i32.add i32.const -16 i32.and - local.tee $7 + local.tee $6 i32.gt_u if - local.get $6 local.get $5 - local.get $7 + local.get $4 + local.get $6 i32.sub i32.const 65535 i32.add @@ -88,16 +86,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $7 + local.tee $6 + local.get $5 local.get $6 - local.get $7 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $7 + local.get $6 memory.grow i32.const 0 i32.lt_s @@ -106,9 +104,10 @@ end end end - local.get $5 - global.set $~lib/rt/stub/offset + global.get $~lib/rt/stub/offset local.get $4 + global.set $~lib/rt/stub/offset + local.get $3 i32.store local.get $2 i32.const 4 diff --git a/tests/compiler/simd.release.wat b/tests/compiler/simd.release.wat index a554a20ba2..0a130301c1 100644 --- a/tests/compiler/simd.release.wat +++ b/tests/compiler/simd.release.wat @@ -1281,8 +1281,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1310,7 +1308,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1324,7 +1323,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/std/array-literal.release.wat b/tests/compiler/std/array-literal.release.wat index d53285989a..4d2e2bfc4d 100644 --- a/tests/compiler/std/array-literal.release.wat +++ b/tests/compiler/std/array-literal.release.wat @@ -1368,8 +1368,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1397,7 +1395,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1411,7 +1410,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index 45106a414b..41242782c0 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -1906,8 +1906,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1935,7 +1933,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1949,7 +1948,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/std/arraybuffer.release.wat b/tests/compiler/std/arraybuffer.release.wat index 334f1c302e..523e3b6aa5 100644 --- a/tests/compiler/std/arraybuffer.release.wat +++ b/tests/compiler/std/arraybuffer.release.wat @@ -1318,8 +1318,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1347,7 +1345,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1361,7 +1360,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/dataview.release.wat b/tests/compiler/std/dataview.release.wat index 7a0b6705e9..9b1a9be298 100644 --- a/tests/compiler/std/dataview.release.wat +++ b/tests/compiler/std/dataview.release.wat @@ -1326,8 +1326,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1355,7 +1353,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1369,7 +1368,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/date.release.wat b/tests/compiler/std/date.release.wat index d97db8a353..61ce7d210a 100644 --- a/tests/compiler/std/date.release.wat +++ b/tests/compiler/std/date.release.wat @@ -1709,8 +1709,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1738,7 +1736,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1752,7 +1751,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/map.release.wat b/tests/compiler/std/map.release.wat index 835670c17a..1df1b7174a 100644 --- a/tests/compiler/std/map.release.wat +++ b/tests/compiler/std/map.release.wat @@ -1339,8 +1339,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1368,7 +1366,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1382,7 +1381,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/math.release.wat b/tests/compiler/std/math.release.wat index 8dc86c5333..5b4a0871d0 100644 --- a/tests/compiler/std/math.release.wat +++ b/tests/compiler/std/math.release.wat @@ -2447,58 +2447,52 @@ f64.sub return end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 + block $break|0 (result f64) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + block $tablify|0 local.get $3 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 end - f64.const 0.4636476090008061 - local.get $4 - f64.const -2.2698777452961687e-17 - f64.add - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 + unreachable end - f64.const 0.7853981633974483 + f64.const 0.4636476090008061 local.get $4 - f64.const -3.061616997868383e-17 + f64.const -2.2698777452961687e-17 f64.add local.get $0 f64.sub f64.sub - local.set $0 br $break|0 end - f64.const 0.982793723247329 + f64.const 0.7853981633974483 local.get $4 - f64.const -1.3903311031230998e-17 + f64.const -3.061616997868383e-17 f64.add local.get $0 f64.sub f64.sub - local.set $0 br $break|0 end - f64.const 1.5707963267948966 + f64.const 0.982793723247329 local.get $4 - f64.const -6.123233995736766e-17 + f64.const -1.3903311031230998e-17 f64.add local.get $0 f64.sub f64.sub - local.set $0 br $break|0 end - unreachable + f64.const 1.5707963267948966 + local.get $4 + f64.const -6.123233995736766e-17 + f64.add + local.get $0 + f64.sub + f64.sub end - local.get $0 local.get $1 f64.copysign ) @@ -2639,58 +2633,52 @@ f32.sub return end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 + block $break|0 (result f32) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + block $tablify|0 local.get $3 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 end - f32.const 0.46364760398864746 - local.get $4 - f32.const -5.01215824399992e-09 - f32.add - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 + unreachable end - f32.const 0.7853981256484985 + f32.const 0.46364760398864746 local.get $4 - f32.const -3.774894707930798e-08 + f32.const -5.01215824399992e-09 f32.add local.get $0 f32.sub f32.sub - local.set $0 br $break|0 end - f32.const 0.9827936887741089 + f32.const 0.7853981256484985 local.get $4 - f32.const -3.447321716976148e-08 + f32.const -3.774894707930798e-08 f32.add local.get $0 f32.sub f32.sub - local.set $0 br $break|0 end - f32.const 1.570796251296997 + f32.const 0.9827936887741089 local.get $4 - f32.const -7.549789415861596e-08 + f32.const -3.447321716976148e-08 f32.add local.get $0 f32.sub f32.sub - local.set $0 br $break|0 end - unreachable + f32.const 1.570796251296997 + local.get $4 + f32.const -7.549789415861596e-08 + f32.add + local.get $0 + f32.sub + f32.sub end - local.get $0 local.get $1 f32.copysign ) @@ -49889,7 +49877,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -49933,7 +49921,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -49955,7 +49943,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50021,7 +50009,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50087,7 +50075,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50153,7 +50141,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50241,7 +50229,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50351,7 +50339,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50505,7 +50493,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -51737,7 +51725,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51763,7 +51751,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51776,7 +51764,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51815,7 +51803,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51854,7 +51842,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51893,7 +51881,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51945,7 +51933,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -52010,7 +51998,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -52036,7 +52024,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check diff --git a/tests/compiler/std/new.release.wat b/tests/compiler/std/new.release.wat index 012ec7a6db..ac28d507e5 100644 --- a/tests/compiler/std/new.release.wat +++ b/tests/compiler/std/new.release.wat @@ -1108,12 +1108,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1124,9 +1124,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1195,12 +1195,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1213,7 +1212,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/std/operator-overloading.release.wat b/tests/compiler/std/operator-overloading.release.wat index 1efa8f2c5c..41c6112228 100644 --- a/tests/compiler/std/operator-overloading.release.wat +++ b/tests/compiler/std/operator-overloading.release.wat @@ -1173,12 +1173,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1189,9 +1189,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1260,12 +1260,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1278,7 +1277,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/std/set.release.wat b/tests/compiler/std/set.release.wat index 22fd0d652b..34992078ce 100644 --- a/tests/compiler/std/set.release.wat +++ b/tests/compiler/std/set.release.wat @@ -1330,8 +1330,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1359,7 +1357,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1373,7 +1372,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/static-array.release.wat b/tests/compiler/std/static-array.release.wat index 263534f48a..7fae93149c 100644 --- a/tests/compiler/std/static-array.release.wat +++ b/tests/compiler/std/static-array.release.wat @@ -1567,8 +1567,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $8 i32.const 256 i32.ge_u @@ -1596,7 +1594,8 @@ i32.const 4 local.get $7 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1610,7 +1609,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 + local.set $5 + local.get $1 + local.get $5 local.get $1 local.get $5 i32.gt_s diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat index f04e217e60..21498b4f38 100644 --- a/tests/compiler/std/staticarray.release.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -1408,8 +1408,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1437,7 +1435,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1451,7 +1450,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s @@ -1866,12 +1867,12 @@ i32.const 2 i32.shl i32.add - local.tee $8 + local.tee $7 i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $3 i32.const 3872 i32.load @@ -1879,8 +1880,8 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $8 local.get $7 + local.get $8 i32.store offset=8 local.get $5 i32.const 1 diff --git a/tests/compiler/std/string-casemapping.release.wat b/tests/compiler/std/string-casemapping.release.wat index c93b01b017..6b316c227d 100644 --- a/tests/compiler/std/string-casemapping.release.wat +++ b/tests/compiler/std/string-casemapping.release.wat @@ -1757,8 +1757,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1786,7 +1784,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1800,7 +1799,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/string-encoding.release.wat b/tests/compiler/std/string-encoding.release.wat index 1dd0f55a65..ca1f932b22 100644 --- a/tests/compiler/std/string-encoding.release.wat +++ b/tests/compiler/std/string-encoding.release.wat @@ -1344,8 +1344,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1373,7 +1371,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1387,7 +1386,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/string.release.wat b/tests/compiler/std/string.release.wat index 57e9b4af89..c1a818c52a 100644 --- a/tests/compiler/std/string.release.wat +++ b/tests/compiler/std/string.release.wat @@ -2354,8 +2354,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -2383,7 +2381,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -2397,7 +2396,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/symbol.release.wat b/tests/compiler/std/symbol.release.wat index e2a9fd8b6d..a2036a6706 100644 --- a/tests/compiler/std/symbol.release.wat +++ b/tests/compiler/std/symbol.release.wat @@ -1411,8 +1411,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1440,7 +1438,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1454,7 +1453,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index b0cdfab0ca..7b9c1a567d 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -1914,8 +1914,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1943,7 +1941,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1957,7 +1956,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/std/uri.release.wat b/tests/compiler/std/uri.release.wat index d6410645a6..755065c743 100644 --- a/tests/compiler/std/uri.release.wat +++ b/tests/compiler/std/uri.release.wat @@ -1424,8 +1424,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1453,7 +1451,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1467,7 +1466,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/super-inline.release.wat b/tests/compiler/super-inline.release.wat index 35da8ff691..68acf73b30 100644 --- a/tests/compiler/super-inline.release.wat +++ b/tests/compiler/super-inline.release.wat @@ -1115,12 +1115,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1131,9 +1131,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1202,12 +1202,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1220,7 +1219,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/switch.release.wat b/tests/compiler/switch.release.wat index 2b5172a5ea..361dd42690 100644 --- a/tests/compiler/switch.release.wat +++ b/tests/compiler/switch.release.wat @@ -1346,8 +1346,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1375,7 +1373,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1389,7 +1388,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/templateliteral.release.wat b/tests/compiler/templateliteral.release.wat index 9256be15f6..f863de7667 100644 --- a/tests/compiler/templateliteral.release.wat +++ b/tests/compiler/templateliteral.release.wat @@ -1417,8 +1417,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1446,7 +1444,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1460,7 +1459,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/throw.release.wat b/tests/compiler/throw.release.wat index d1427154ca..036b91c2d2 100644 --- a/tests/compiler/throw.release.wat +++ b/tests/compiler/throw.release.wat @@ -1208,8 +1208,6 @@ 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 diff --git a/tests/compiler/typeof.release.wat b/tests/compiler/typeof.release.wat index 5a767c425a..dade9d6465 100644 --- a/tests/compiler/typeof.release.wat +++ b/tests/compiler/typeof.release.wat @@ -1131,12 +1131,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1147,9 +1147,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1218,12 +1218,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1236,7 +1235,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/unary.release.wat b/tests/compiler/unary.release.wat index 202341c088..6c711e0cb2 100644 --- a/tests/compiler/unary.release.wat +++ b/tests/compiler/unary.release.wat @@ -8,8 +8,6 @@ (export "memory" (memory $0)) (start $~start) (func $~start - (local $0 i32) - (local $1 i64) global.get $unary/i i32.const 1 i32.add diff --git a/tests/compiler/while.release.wat b/tests/compiler/while.release.wat index c90bf786b3..7057cf790a 100644 --- a/tests/compiler/while.release.wat +++ b/tests/compiler/while.release.wat @@ -1103,12 +1103,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1119,9 +1119,9 @@ unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1190,12 +1190,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1207,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s From 2757df661a331db663cb5dd34f7db8356263bf8a Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 01:38:41 +0300 Subject: [PATCH 08/21] simplify glue code for binaryen.js --- src/glue/binaryen.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/glue/binaryen.js b/src/glue/binaryen.js index 461bb68cdb..b64e5a23e2 100644 --- a/src/glue/binaryen.js +++ b/src/glue/binaryen.js @@ -918,10 +918,8 @@ export const { // parameters (built with -sWASM_BIGINT). AssemblyScript passes i64 values as a // pair of 32-bit halves, so we pack/unpack BigInt at the boundary. -const LOW_MASK = 0xFFFFFFFFn; - function packI64(lo, hi) { - return BigInt.asIntN(64, (BigInt.asIntN(32, BigInt(hi)) << 32n) | (BigInt(lo >>> 0) & LOW_MASK)); + return (BigInt(hi | 0) << 32n) | BigInt(lo >>> 0); } export function _BinaryenLiteralInt64(literalOut, lo, hi) { @@ -933,21 +931,21 @@ export function _BinaryenLiteralFloat64Bits(literalOut, lo, hi) { } export function _BinaryenConstGetValueI64Low(expr) { - return Number(BigInt.asIntN(32, _BinaryenConstGetValueI64(expr) & LOW_MASK)); + return Number(_BinaryenConstGetValueI64(expr) & 0xFFFFFFFFn) | 0; } export function _BinaryenConstGetValueI64High(expr) { - return Number(BigInt.asIntN(32, _BinaryenConstGetValueI64(expr) >> 32n)); + return Number(_BinaryenConstGetValueI64(expr) >> 32n) | 0; } export function _BinaryenConstSetValueI64Low(expr, lo) { const cur = _BinaryenConstGetValueI64(expr); - _BinaryenConstSetValueI64(expr, packI64(lo, Number(BigInt.asIntN(32, cur >> 32n)))); + _BinaryenConstSetValueI64(expr, packI64(lo, Number(cur >> 32n) | 0)); } export function _BinaryenConstSetValueI64High(expr, hi) { const cur = _BinaryenConstGetValueI64(expr); - _BinaryenConstSetValueI64(expr, packI64(Number(BigInt.asIntN(32, cur & LOW_MASK)), hi)); + _BinaryenConstSetValueI64(expr, packI64(Number(cur & 0xFFFFFFFFn) | 0, hi)); } export default binaryen; From 787e663a175725c4b312dac77d2d416416d71674 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 01:56:55 +0300 Subject: [PATCH 09/21] final fixes for 64-bit literals --- src/glue/binaryen.d.ts | 10 ++++------ src/glue/binaryen.js | 37 +++++++++++++++---------------------- src/module.ts | 6 +++--- 3 files changed, 22 insertions(+), 31 deletions(-) diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 7da9b076b5..347428aa8b 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -96,12 +96,12 @@ export declare function _BinaryenModuleDispose(module: ModuleRef): void; export declare function _BinaryenSizeofLiteral(): usize; export declare function _BinaryenLiteralInt32(literalOut: LiteralRef, x: i32): void; -export declare function _BinaryenLiteralInt64(literalOut: LiteralRef, x: i32, y: i32): void; +export declare function _BinaryenLiteralInt64(literalOut: LiteralRef, value: i64): void; export declare function _BinaryenLiteralFloat32(literalOut: LiteralRef, x: f32): void; export declare function _BinaryenLiteralFloat64(literalOut: LiteralRef, x: f64): void; export declare function _BinaryenLiteralVec128(literalOut: LiteralRef, x: ArrayRef): void; export declare function _BinaryenLiteralFloat32Bits(literalOut: LiteralRef, x: i32): void; -export declare function _BinaryenLiteralFloat64Bits(literalOut: LiteralRef, x: i32, y: i32): void; +export declare function _BinaryenLiteralFloat64Bits(literalOut: LiteralRef, value: i64): void; export declare function _BinaryenExpressionGetId(expr: ExpressionRef): ExpressionId; export declare function _BinaryenExpressionGetType(expr: ExpressionRef): TypeRef; @@ -252,10 +252,8 @@ export declare function _BinaryenAtomicStore(module: ModuleRef, bytes: Index, of export declare function _BinaryenConst(module: ModuleRef, value: LiteralRef): ExpressionRef; export declare function _BinaryenConstGetValueI32(expr: ExpressionRef): i32; export declare function _BinaryenConstSetValueI32(expr: ExpressionRef, value: i32): void; -export declare function _BinaryenConstGetValueI64Low(expr: ExpressionRef): i32; -export declare function _BinaryenConstSetValueI64Low(expr: ExpressionRef, value: i32): void; -export declare function _BinaryenConstGetValueI64High(expr: ExpressionRef): i32; -export declare function _BinaryenConstSetValueI64High(expr: ExpressionRef, value: i32): void; +export declare function _BinaryenConstGetValueI64(expr: ExpressionRef): i64; +export declare function _BinaryenConstSetValueI64(expr: ExpressionRef, value: i64): void; export declare function _BinaryenConstGetValueF32(expr: ExpressionRef): f32; export declare function _BinaryenConstSetValueF32(expr: ExpressionRef, value: f32): void; export declare function _BinaryenConstGetValueF64(expr: ExpressionRef): f64; diff --git a/src/glue/binaryen.js b/src/glue/binaryen.js index b64e5a23e2..fe0597746e 100644 --- a/src/glue/binaryen.js +++ b/src/glue/binaryen.js @@ -4,6 +4,7 @@ */ import binaryen from "../../lib/binaryen.js"; +import Long from "long"; export const { _BinaryenTypeCreate, @@ -209,8 +210,6 @@ export const { _BinaryenConst, _BinaryenConstGetValueI32, _BinaryenConstSetValueI32, - _BinaryenConstGetValueI64, - _BinaryenConstSetValueI64, _BinaryenConstGetValueF32, _BinaryenConstSetValueF32, _BinaryenConstGetValueF64, @@ -915,37 +914,31 @@ export const { } = binaryen; // Shims for C-API functions whose Emscripten binding now uses BigInt for i64 -// parameters (built with -sWASM_BIGINT). AssemblyScript passes i64 values as a -// pair of 32-bit halves, so we pack/unpack BigInt at the boundary. +// parameters (built with -sWASM_BIGINT). In portable/JS mode AssemblyScript +// represents i64 as Long, so we convert between Long and BigInt here. -function packI64(lo, hi) { - return (BigInt(hi | 0) << 32n) | BigInt(lo >>> 0); +function longToBigInt(value) { + return (BigInt(value.high | 0) << 32n) | BigInt(value.low >>> 0); } -export function _BinaryenLiteralInt64(literalOut, lo, hi) { - return binaryen._BinaryenLiteralInt64(literalOut, packI64(lo, hi)); +function bigIntToLong(value) { + return Long.fromBits(Number(value & 0xFFFFFFFFn) | 0, Number(value >> 32n) | 0); } -export function _BinaryenLiteralFloat64Bits(literalOut, lo, hi) { - return binaryen._BinaryenLiteralFloat64Bits(literalOut, packI64(lo, hi)); +export function _BinaryenLiteralInt64(literalOut, value) { + return binaryen._BinaryenLiteralInt64(literalOut, longToBigInt(value)); } -export function _BinaryenConstGetValueI64Low(expr) { - return Number(_BinaryenConstGetValueI64(expr) & 0xFFFFFFFFn) | 0; +export function _BinaryenLiteralFloat64Bits(literalOut, value) { + return binaryen._BinaryenLiteralFloat64Bits(literalOut, longToBigInt(value)); } -export function _BinaryenConstGetValueI64High(expr) { - return Number(_BinaryenConstGetValueI64(expr) >> 32n) | 0; +export function _BinaryenConstGetValueI64(expr) { + return bigIntToLong(binaryen._BinaryenConstGetValueI64(expr)); } -export function _BinaryenConstSetValueI64Low(expr, lo) { - const cur = _BinaryenConstGetValueI64(expr); - _BinaryenConstSetValueI64(expr, packI64(lo, Number(cur >> 32n) | 0)); -} - -export function _BinaryenConstSetValueI64High(expr, hi) { - const cur = _BinaryenConstGetValueI64(expr); - _BinaryenConstSetValueI64(expr, packI64(Number(cur & 0xFFFFFFFFn) | 0, hi)); +export function _BinaryenConstSetValueI64(expr, value) { + binaryen._BinaryenConstSetValueI64(expr, longToBigInt(value)); } export default binaryen; diff --git a/src/module.ts b/src/module.ts index d794e09e12..74d27710dc 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1372,7 +1372,7 @@ export class Module { i64(valueLow: i32, valueHigh: i32 = 0): ExpressionRef { let out = this.lit; - binaryen._BinaryenLiteralInt64(out, valueLow, valueHigh); + binaryen._BinaryenLiteralInt64(out, i64_new(valueLow, valueHigh)); return binaryen._BinaryenConst(this.ref, out); } @@ -3058,11 +3058,11 @@ export function getConstValueI32(expr: ExpressionRef): i32 { } export function getConstValueI64Low(expr: ExpressionRef): i32 { - return binaryen._BinaryenConstGetValueI64Low(expr); + return i64_low(binaryen._BinaryenConstGetValueI64(expr)); } export function getConstValueI64High(expr: ExpressionRef): i32 { - return binaryen._BinaryenConstGetValueI64High(expr); + return i64_high(binaryen._BinaryenConstGetValueI64(expr)); } export function getConstValueInteger(expr: ExpressionRef, isWasm64: bool): i64 { From bd3592661bce01f49b40a6a0b41559d963e6d57a Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 02:03:03 +0300 Subject: [PATCH 10/21] minor refactoring [skip ci] --- src/glue/binaryen.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/glue/binaryen.js b/src/glue/binaryen.js index fe0597746e..209621d693 100644 --- a/src/glue/binaryen.js +++ b/src/glue/binaryen.js @@ -917,28 +917,28 @@ export const { // parameters (built with -sWASM_BIGINT). In portable/JS mode AssemblyScript // represents i64 as Long, so we convert between Long and BigInt here. -function longToBigInt(value) { +function toBigInt(value) { return (BigInt(value.high | 0) << 32n) | BigInt(value.low >>> 0); } -function bigIntToLong(value) { +function toLong(value) { return Long.fromBits(Number(value & 0xFFFFFFFFn) | 0, Number(value >> 32n) | 0); } export function _BinaryenLiteralInt64(literalOut, value) { - return binaryen._BinaryenLiteralInt64(literalOut, longToBigInt(value)); + return binaryen._BinaryenLiteralInt64(literalOut, toBigInt(value)); } export function _BinaryenLiteralFloat64Bits(literalOut, value) { - return binaryen._BinaryenLiteralFloat64Bits(literalOut, longToBigInt(value)); + return binaryen._BinaryenLiteralFloat64Bits(literalOut, toBigInt(value)); } export function _BinaryenConstGetValueI64(expr) { - return bigIntToLong(binaryen._BinaryenConstGetValueI64(expr)); + return toLong(binaryen._BinaryenConstGetValueI64(expr)); } export function _BinaryenConstSetValueI64(expr, value) { - binaryen._BinaryenConstSetValueI64(expr, longToBigInt(value)); + binaryen._BinaryenConstSetValueI64(expr, toBigInt(value)); } export default binaryen; From 28e32f9fe56a23349bc775be44b4443aad980962 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 02:13:50 +0300 Subject: [PATCH 11/21] minor refactoring again [skip ci] --- src/glue/binaryen.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/glue/binaryen.js b/src/glue/binaryen.js index 209621d693..4caf71afbb 100644 --- a/src/glue/binaryen.js +++ b/src/glue/binaryen.js @@ -917,28 +917,28 @@ export const { // parameters (built with -sWASM_BIGINT). In portable/JS mode AssemblyScript // represents i64 as Long, so we convert between Long and BigInt here. -function toBigInt(value) { - return (BigInt(value.high | 0) << 32n) | BigInt(value.low >>> 0); +function toBigInt(long) { + return (BigInt(long.high | 0) << 32n) | BigInt(long.low >>> 0); } -function toLong(value) { - return Long.fromBits(Number(value & 0xFFFFFFFFn) | 0, Number(value >> 32n) | 0); +function toLong(bign) { + return Long.fromBits(Number(bign & 0xFFFFFFFFn) | 0, Number(bign >> 32n) | 0); } -export function _BinaryenLiteralInt64(literalOut, value) { - return binaryen._BinaryenLiteralInt64(literalOut, toBigInt(value)); +export function _BinaryenLiteralInt64(lit, val) { + return binaryen._BinaryenLiteralInt64(lit, toBigInt(val)); } -export function _BinaryenLiteralFloat64Bits(literalOut, value) { - return binaryen._BinaryenLiteralFloat64Bits(literalOut, toBigInt(value)); +export function _BinaryenLiteralFloat64Bits(lit, val) { + return binaryen._BinaryenLiteralFloat64Bits(lit, toBigInt(val)); } export function _BinaryenConstGetValueI64(expr) { return toLong(binaryen._BinaryenConstGetValueI64(expr)); } -export function _BinaryenConstSetValueI64(expr, value) { - binaryen._BinaryenConstSetValueI64(expr, toBigInt(value)); +export function _BinaryenConstSetValueI64(expr, val) { + binaryen._BinaryenConstSetValueI64(expr, toBigInt(val)); } export default binaryen; From 6d918dde8885cafcc1747e222af86b66af657d44 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 02:54:16 +0300 Subject: [PATCH 12/21] update pass pipeline. Rename Stringref -> Strings feature internally --- src/compiler.ts | 6 +++--- src/index-wasm.ts | 2 +- src/module.ts | 14 +++++++++++++- src/program.ts | 12 ++++++------ std/assembly/shared/feature.ts | 4 ++-- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 68bd070f84..a7df58d26f 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -326,7 +326,7 @@ export class Options { setFeature(feature: Feature, on: bool = true): void { if (on) { // Enabling Stringref also enables GC - if (feature & Feature.Stringref) feature |= Feature.GC; + if (feature & Feature.Strings) feature |= Feature.GC; // Enabling GC also enables Reference Types if (feature & Feature.GC) feature |= Feature.ReferenceTypes; // Enabling Relaxed SIMD also enables SIMD @@ -336,7 +336,7 @@ export class Options { // Disabling Reference Types also disables GC if (feature & Feature.ReferenceTypes) feature |= Feature.GC; // Disabling GC also disables Stringref - if (feature & Feature.GC) feature |= Feature.Stringref; + if (feature & Feature.GC) feature |= Feature.Strings; // Disabling SIMD also disables Relaxed SIMD if (feature & Feature.Simd) feature |= Feature.RelaxedSimd; this.features &= ~feature; @@ -515,7 +515,7 @@ export class Compiler extends DiagnosticEmitter { if (options.hasFeature(Feature.Memory64)) featureFlags |= FeatureFlags.Memory64; if (options.hasFeature(Feature.RelaxedSimd)) featureFlags |= FeatureFlags.RelaxedSIMD; if (options.hasFeature(Feature.ExtendedConst)) featureFlags |= FeatureFlags.ExtendedConst; - if (options.hasFeature(Feature.Stringref)) featureFlags |= FeatureFlags.Stringref; + if (options.hasFeature(Feature.Strings)) featureFlags |= FeatureFlags.Strings; module.setFeatures(featureFlags); // set up the main start function diff --git a/src/index-wasm.ts b/src/index-wasm.ts index ec51de73da..2944ef7636 100644 --- a/src/index-wasm.ts +++ b/src/index-wasm.ts @@ -201,7 +201,7 @@ export const FEATURE_RELAXED_SIMD = Feature.RelaxedSimd; /** Extended const expressions. */ export const FEATURE_EXTENDED_CONST = Feature.ExtendedConst; /** String references. */ -export const FEATURE_STRINGREF = Feature.Stringref; +export const FEATURE_STRINGREF = Feature.Strings; /** All features. */ export const FEATURES_ALL = Feature.All; /** Default features. */ diff --git a/src/module.ts b/src/module.ts index 74d27710dc..a91f7da8b1 100644 --- a/src/module.ts +++ b/src/module.ts @@ -210,7 +210,7 @@ export const enum FeatureFlags { Memory64 = 2048 /* _BinaryenFeatureMemory64 */, RelaxedSIMD = 4096 /* _BinaryenFeatureRelaxedSIMD */, ExtendedConst = 8192 /* _BinaryenFeatureExtendedConst */, - Stringref = 16384 /* _BinaryenFeatureStrings */, + Strings = 16384 /* _BinaryenFeatureStrings */, MultiMemory = 32768 /* _BinaryenFeatureMultiMemory */, StackSwitching = 65536 /* _BinaryenFeatureStackSwitching */, SharedEverything = 131072 /* _BinaryenFeatureSharedEverything */, @@ -2689,6 +2689,12 @@ export class Module { passes.push("gufa-optimizing"); passes.push("dae-optimizing"); } + if (this.getFeatures() & FeatureFlags.MultiValue) { + // Optimize tuples before local opts (as splitting tuples can help local + // opts), but also not too early, as we want to be after + // optimize-instructions at least (which can remove tuple-related things). + passes.push("tuple-optimization"); + } if (optimizeLevel >= 3) { passes.push("simplify-locals-nostructure"); passes.push("flatten"); @@ -2822,6 +2828,12 @@ export class Module { passes.push("merge-blocks"); passes.push("vacuum"); + if (this.getFeatures() & FeatureFlags.Strings) { + // Gather strings to globals right before reorder-globals, which will then + // sort them properly. + passes.push("string-gathering"); + } + passes.push("simplify-globals-optimizing"); passes.push("reorder-globals"); passes.push("remove-unused-brs"); diff --git a/src/program.ts b/src/program.ts index e5e27ebc59..9ffcd3e0c3 100644 --- a/src/program.ts +++ b/src/program.ts @@ -390,9 +390,9 @@ export namespace OperatorKind { case Token.GreaterThan_GreaterThan_Equals: return OperatorKind.BitwiseShr; case Token.GreaterThan_GreaterThan_GreaterThan: case Token.GreaterThan_GreaterThan_GreaterThan_Equals: return OperatorKind.BitwiseShrU; - case Token.Equals_Equals: + case Token.Equals_Equals: case Token.Equals_Equals_Equals: return OperatorKind.Eq; - case Token.Exclamation_Equals: + case Token.Exclamation_Equals: case Token.Exclamation_Equals_Equals: return OperatorKind.Ne; case Token.GreaterThan: return OperatorKind.Gt; case Token.GreaterThan_Equals: return OperatorKind.Ge; @@ -436,7 +436,7 @@ export class Program extends DiagnosticEmitter { diagnostics: DiagnosticMessage[] | null = null ) { super(diagnostics); - this.module = Module.create(options.stackSize > 0, options.sizeTypeRef); + this.module = Module.create(options.stackSize > 0, options.sizeTypeRef); this.parser = new Parser(this.diagnostics, this.sources); this.resolver = new Resolver(this); let nativeFile = new File(this, Source.native); @@ -1085,7 +1085,7 @@ export class Program extends DiagnosticEmitter { this.registerConstantInteger(CommonNames.ASC_FEATURE_EXTENDED_CONST, Type.bool, i64_new(options.hasFeature(Feature.ExtendedConst) ? 1 : 0, 0)); this.registerConstantInteger(CommonNames.ASC_FEATURE_STRINGREF, Type.bool, - i64_new(options.hasFeature(Feature.Stringref) ? 1 : 0, 0)); + i64_new(options.hasFeature(Feature.Strings) ? 1 : 0, 0)); // remember deferred elements let queuedImports = new Array(); @@ -1300,7 +1300,7 @@ export class Program extends DiagnosticEmitter { this.registerWrapperClass(Type.array, CommonNames.RefArray); this.registerWrapperClass(Type.i31, CommonNames.RefI31); } - if (options.hasFeature(Feature.Stringref)) { + if (options.hasFeature(Feature.Strings)) { this.registerWrapperClass(Type.string, CommonNames.RefString); } } @@ -1974,7 +1974,7 @@ export class Program extends DiagnosticEmitter { case TypeKind.StringviewWTF16: case TypeKind.StringviewIter: { return this.checkFeatureEnabled(Feature.ReferenceTypes, reportNode) - && this.checkFeatureEnabled(Feature.Stringref, reportNode); + && this.checkFeatureEnabled(Feature.Strings, reportNode); } } let classReference = type.getClass(); diff --git a/std/assembly/shared/feature.ts b/std/assembly/shared/feature.ts index 1baa9ba3c9..0691f422d3 100644 --- a/std/assembly/shared/feature.ts +++ b/std/assembly/shared/feature.ts @@ -33,7 +33,7 @@ export const enum Feature { /** Extended const expressions. */ ExtendedConst = 1 << 13, // see: https://github.com/WebAssembly/extended-const /** Reference typed strings. */ - Stringref = 1 << 14, // see: https://github.com/WebAssembly/stringref + Strings = 1 << 14, // see: https://github.com/WebAssembly/stringref /** All features. */ All = (1 << 15) - 1 } @@ -55,7 +55,7 @@ export function featureToString(feature: Feature): string { case Feature.Memory64: return "memory64"; case Feature.RelaxedSimd: return "relaxed-simd"; case Feature.ExtendedConst: return "extended-const"; - case Feature.Stringref: return "stringref"; + case Feature.Strings: return "stringref"; } assert(false); return ""; From 86a9c573530135f35922f095cf7499f533d41889 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 03:08:15 +0300 Subject: [PATCH 13/21] add missing getTrapsNeverHappen & setTrapsNeverHappen methods for module --- src/module.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/module.ts b/src/module.ts index a91f7da8b1..5baed2a319 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2498,6 +2498,14 @@ export class Module { binaryen._BinaryenSetDebugInfo(on); } + getTrapsNeverHappen(): bool { + return binaryen._BinaryenGetTrapsNeverHappen(); + } + + setTrapsNeverHappen(on: bool): void { + binaryen._BinaryenSetTrapsNeverHappen(on); + } + getClosedWorld(): bool { return binaryen._BinaryenGetClosedWorld(); } From ae56b42116df2a3bef54f05f80a71e4f2a477a9a Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 11:54:21 +0300 Subject: [PATCH 14/21] improve pass pipeline --- src/module.ts | 23 +- tests/compiler/NonNullable.release.wat | 194 +- tests/compiler/abi.release.wat | 8 +- tests/compiler/assert-nonnull.release.wat | 634 +- tests/compiler/assignment-chain.release.wat | 2144 +- tests/compiler/bigint-integration.release.wat | 6 +- tests/compiler/bindings/esm.release.wat | 4716 +- .../bindings/noExportRuntime.release.wat | 2796 +- tests/compiler/bindings/raw.release.wat | 4716 +- tests/compiler/builtins.release.wat | 26 +- tests/compiler/call-inferred.release.wat | 2210 +- tests/compiler/call-optional.release.wat | 48 +- tests/compiler/call-rest.release.wat | 3908 +- tests/compiler/call-super.release.wat | 2496 +- tests/compiler/class-implements.release.wat | 2935 +- .../class-overloading-cast.release.wat | 2789 +- tests/compiler/class-overloading.release.wat | 3259 +- tests/compiler/class-override.release.wat | 1892 +- .../class-static-function.release.wat | 15 +- tests/compiler/class.release.wat | 2632 +- tests/compiler/const-folding.release.wat | 12 +- tests/compiler/constructor.release.wat | 2578 +- tests/compiler/declare.release.wat | 2 +- tests/compiler/do.release.wat | 1215 +- tests/compiler/duplicate-fields.release.wat | 1854 +- .../compiler/empty-exportruntime.release.wat | 1900 +- tests/compiler/empty-new.release.wat | 460 +- tests/compiler/enum-to-string.release.wat | 6 +- tests/compiler/export.release.wat | 10 +- tests/compiler/exportimport-table.release.wat | 4 +- tests/compiler/exports.release.wat | 14 +- .../exportstar-rereexport.release.wat | 972 +- tests/compiler/exportstar.release.wat | 10 +- .../extends-baseaggregate.release.wat | 2770 +- tests/compiler/extends-recursive.release.wat | 1964 +- tests/compiler/external.release.wat | 2 +- .../features/reference-types.release.wat | 24 +- tests/compiler/features/threads.release.wat | 82 +- .../compiler/field-initialization.release.wat | 2760 +- tests/compiler/field.release.wat | 2684 +- tests/compiler/for.release.wat | 1552 +- tests/compiler/function-call.release.wat | 1306 +- .../compiler/function-expression.release.wat | 914 +- .../function-inline-regressions.release.wat | 16 +- tests/compiler/function-types.release.wat | 12 +- tests/compiler/getter-call.release.wat | 1004 +- tests/compiler/getter-setter.release.wat | 4 +- tests/compiler/heap.release.wat | 432 +- tests/compiler/import-memory.release.wat | 4 +- .../incremental-gc/call-indirect.release.wat | 2134 +- tests/compiler/infer-array.release.wat | 3748 +- tests/compiler/infer-generic.release.wat | 1382 +- tests/compiler/inlining-recursive.release.wat | 6 +- tests/compiler/inlining.release.wat | 1517 +- tests/compiler/instanceof.release.wat | 2984 +- tests/compiler/issues/1095.release.wat | 1806 +- tests/compiler/issues/1225.release.wat | 1760 +- tests/compiler/issues/1699.release.wat | 3724 +- tests/compiler/issues/1714.release.wat | 4 +- tests/compiler/issues/2166.release.wat | 1764 +- tests/compiler/issues/2322/index.release.wat | 1190 +- tests/compiler/issues/2622.release.wat | 1488 +- tests/compiler/issues/2707.release.wat | 1746 +- tests/compiler/issues/2825.release.wat | 12 +- tests/compiler/issues/2873.release.wat | 4946 +- tests/compiler/logical.release.wat | 1840 +- tests/compiler/loop-flow.release.wat | 55 +- tests/compiler/loop-wrap.release.wat | 10 +- tests/compiler/managed-cast.release.wat | 1815 +- tests/compiler/many-locals.release.wat | 6 +- tests/compiler/memcpy.release.wat | 4 +- tests/compiler/memmove.release.wat | 4 +- tests/compiler/memory.release.wat | 6 +- tests/compiler/memset.release.wat | 6 +- tests/compiler/new.release.wat | 2224 +- tests/compiler/number.release.wat | 3377 +- tests/compiler/object-literal.release.wat | 3442 +- ...perator-overload-non-ambiguity.release.wat | 1536 +- .../optional-typeparameters.release.wat | 2166 +- tests/compiler/possibly-null.release.wat | 268 +- tests/compiler/reexport.release.wat | 682 +- tests/compiler/rereexport.release.wat | 972 +- tests/compiler/resolve-access.release.wat | 3078 +- tests/compiler/resolve-binary.release.wat | 4873 +- .../resolve-elementaccess.release.wat | 5623 +- .../resolve-function-expression.release.wat | 2522 +- tests/compiler/resolve-new.release.wat | 1080 +- .../resolve-propertyaccess.release.wat | 3196 +- tests/compiler/resolve-ternary.release.wat | 2909 +- tests/compiler/resolve-unary.release.wat | 3132 +- tests/compiler/return-unreachable.release.wat | 1518 +- tests/compiler/return.release.wat | 12 +- .../rt/alloc-large-memory.release.wat | 260 +- tests/compiler/rt/finalize.release.wat | 1170 +- tests/compiler/rt/flags.release.wat | 10 +- tests/compiler/rt/issue-2719.release.wat | 1418 +- .../rt/runtime-incremental-export.release.wat | 1900 +- .../rt/runtime-minimal-export.release.wat | 902 +- .../rt/runtime-stub-export.release.wat | 22 +- tests/compiler/simd.release.wat | 3340 +- tests/compiler/std/array-access.release.wat | 126 +- tests/compiler/std/array-literal.release.wat | 3036 +- tests/compiler/std/array.release.wat | 32494 +++--- tests/compiler/std/arraybuffer.release.wat | 2302 +- tests/compiler/std/console.release.wat | 290 +- tests/compiler/std/dataview.release.wat | 3584 +- tests/compiler/std/date.release.wat | 11184 +- tests/compiler/std/hash.release.wat | 54 +- tests/compiler/std/map.release.wat | 32900 +++--- tests/compiler/std/math.release.wat | 19509 ++-- tests/compiler/std/mod.release.wat | 14 +- tests/compiler/std/new.release.wat | 596 +- .../std/operator-overloading.release.wat | 3556 +- tests/compiler/std/pointer.release.wat | 6 +- tests/compiler/std/set.release.wat | 23570 ++-- tests/compiler/std/static-array.release.wat | 3200 +- tests/compiler/std/staticarray.release.wat | 7793 +- .../std/string-casemapping.release.wat | 9958 +- .../compiler/std/string-encoding.release.wat | 7042 +- tests/compiler/std/string-nonnull.release.wat | 152 +- tests/compiler/std/string.release.wat | 28297 +++-- tests/compiler/std/symbol.release.wat | 5694 +- tests/compiler/std/typedarray.release.wat | 88642 ++++++++-------- tests/compiler/std/uri.release.wat | 2274 +- tests/compiler/super-inline.release.wat | 1564 +- tests/compiler/switch.release.wat | 3484 +- tests/compiler/templateliteral.release.wat | 7491 +- tests/compiler/ternary.release.wat | 16 +- tests/compiler/throw.release.wat | 1576 +- tests/compiler/typealias.release.wat | 122 +- tests/compiler/typeof.release.wat | 1348 +- tests/compiler/unify-local-flags.release.wat | 16 +- tests/compiler/while.release.wat | 1212 +- 133 files changed, 225265 insertions(+), 225440 deletions(-) diff --git a/src/module.ts b/src/module.ts index 5baed2a319..9d9c58e717 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2602,6 +2602,10 @@ export class Module { binaryen._BinaryenSetAllowInliningFunctionsWithLoops(enabled); } + setPartialInliningIfs(value: i32): void { + this.setPassArgument("partial-inlining-ifs", value.toString()); + } + // meta (module) getFeatures(): FeatureFlags { @@ -2666,6 +2670,7 @@ export class Module { this.setOneCallerInlineMaxSize(80); this.setAllowInliningFunctionsWithLoops(false); } + this.setPartialInliningIfs(optimizeLevel >= 2 ? 4 : 0); // Pass order here differs substantially from Binaryen's defaults // see: Binaryen/src/pass.cpp @@ -2676,10 +2681,12 @@ export class Module { passes.push("duplicate-function-elimination"); passes.push("remove-unused-module-elements"); // + + if (optimizeLevel >= 2) { + passes.push("once-reduction"); + } // --- PassRunner::addDefaultFunctionOptimizationPasses --- if (optimizeLevel >= 2) { - passes.push("once-reduction"); passes.push("inlining"); passes.push("simplify-globals-optimizing"); } @@ -2694,7 +2701,6 @@ export class Module { passes.push("merge-blocks"); passes.push("precompute-propagate"); passes.push("simplify-globals-optimizing"); - passes.push("gufa-optimizing"); passes.push("dae-optimizing"); } if (this.getFeatures() & FeatureFlags.MultiValue) { @@ -2709,16 +2715,19 @@ export class Module { passes.push("vacuum"); passes.push("simplify-locals-notee-nostructure"); passes.push("vacuum"); + passes.push("local-cse"); passes.push("licm"); passes.push("merge-locals"); passes.push("reorder-locals"); } passes.push("optimize-instructions"); - if (optimizeLevel >= 3 || shrinkLevel >= 1) { - passes.push("dce"); + if (optimizeLevel >= 2) { + passes.push("avoid-reinterprets"); } + passes.push("dce"); passes.push("remove-unused-brs"); passes.push("remove-unused-names"); + passes.push("merge-blocks"); if (optimizeLevel >= 3 || shrinkLevel >= 2) { passes.push("inlining"); passes.push("precompute-propagate"); @@ -2762,6 +2771,7 @@ export class Module { // --- PassRunner::addDefaultGlobalOptimizationPostPasses --- if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("generate-global-effects"); passes.push("simplify-globals-optimizing"); passes.push("dae-optimizing"); } @@ -2797,6 +2807,10 @@ export class Module { } passes.push("directize"); // replace indirect with direct calls passes.push("dae-optimizing"); // reduce arity + if (optimizeLevel >= 3 || shrinkLevel >= 1) { + // whole-program value-flow analysis + passes.push("gufa-optimizing"); + } passes.push("inlining-optimizing"); // and inline if possible if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("code-folding"); @@ -2844,6 +2858,7 @@ export class Module { passes.push("simplify-globals-optimizing"); passes.push("reorder-globals"); + passes.push("reorder-functions"); passes.push("remove-unused-brs"); passes.push("optimize-instructions"); } diff --git a/tests/compiler/NonNullable.release.wat b/tests/compiler/NonNullable.release.wat index 7f27ab78fa..03d6aaf8c0 100644 --- a/tests/compiler/NonNullable.release.wat +++ b/tests/compiler/NonNullable.release.wat @@ -20,103 +20,6 @@ (data $5.1 (i32.const 1272) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") (export "memory" (memory $0)) (start $~start) - (func $~start - 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 1388 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 3 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1136 - i32.const 1136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - call $NonNullable/assertNonNull<~lib/string/String> - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1388 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - call $~lib/string/String.__ne - if - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - call $NonNullable/assertNonNull<~lib/string/String> - 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 34176 - i32.const 34224 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -351,4 +254,101 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + 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 1388 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $NonNullable/assertNonNull<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1388 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $~lib/string/String.__ne + if + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $NonNullable/assertNonNull<~lib/string/String> + 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 34176 + i32.const 34224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/abi.release.wat b/tests/compiler/abi.release.wat index 5320131fcb..f5060e8da6 100644 --- a/tests/compiler/abi.release.wat +++ b/tests/compiler/abi.release.wat @@ -3,11 +3,11 @@ (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") - (export "exported" (func $abi/exported)) - (export "exportedExported" (func $abi/exported)) - (export "exportedInternal" (func $abi/exported)) + (export "exported" (func $abi/exportedInternal)) + (export "exportedExported" (func $abi/exportedInternal)) + (export "exportedInternal" (func $abi/exportedInternal)) (export "memory" (memory $0)) - (func $abi/exported (result i32) + (func $abi/exportedInternal (result i32) i32.const -128 ) ) diff --git a/tests/compiler/assert-nonnull.release.wat b/tests/compiler/assert-nonnull.release.wat index 67f4405bc2..53e5430763 100644 --- a/tests/compiler/assert-nonnull.release.wat +++ b/tests/compiler/assert-nonnull.release.wat @@ -132,7 +132,57 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testObj (param $0 i32) (result i32) + (func $export:assert-nonnull/testRet (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.eqz + br_if $folding-inner1 + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1184 + i32.const 44 + i32.const 10 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testProp (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -158,23 +208,23 @@ i64.store global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 i32.store offset=4 local.get $0 i32.eqz if i32.const 1056 i32.const 1184 - i32.const 11 + i32.const 15 i32.const 10 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer @@ -182,6 +232,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end i32.const 34256 @@ -191,7 +242,65 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testProp (param $0 i32) (result i32) + (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner1 + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1184 + i32.const 52 + i32.const 10 + 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 @@ -220,7 +329,7 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store offset=4 local.get $0 @@ -228,21 +337,15 @@ if i32.const 1056 i32.const 1184 - i32.const 15 + i32.const 48 i32.const 10 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 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - return + i32.load + call_indirect (type $1) + unreachable end i32.const 34256 i32.const 34304 @@ -251,7 +354,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testArr (param $0 i32) (result i32) + (func $export:assert-nonnull/testObj (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -283,7 +386,7 @@ if i32.const 1056 i32.const 1184 - i32.const 19 + i32.const 11 i32.const 10 call $~lib/builtins/abort unreachable @@ -291,6 +394,39 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 + i32.load + global.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 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testFn2 (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -305,50 +441,72 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 i32.eqz if - i32.const 1248 - i32.const 1312 - i32.const 114 - i32.const 42 + i32.const 1056 + i32.const 1184 + i32.const 39 + i32.const 13 call $~lib/builtins/abort unreachable end + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 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 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + 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 - local.tee $0 - i32.store offset=4 + i32.store local.get $0 i32.eqz if - i32.const 1360 - i32.const 1312 - i32.const 118 - i32.const 40 + i32.const 1056 + i32.const 1184 + i32.const 35 + i32.const 10 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.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 + i32.load + call_indirect (type $1) + unreachable end i32.const 34256 i32.const 34304 @@ -417,167 +575,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testAll (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 - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=12 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.tee $0 - i32.store offset=16 - local.get $0 - i32.eqz - br_if $folding-inner1 - 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - i32.const 1184 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable - ) - (func $export:assert-nonnull/testAll2 (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 - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=12 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.tee $0 - i32.store offset=16 - local.get $0 - i32.eqz - br_if $folding-inner1 - 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - i32.const 1184 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable - ) - (func $export:assert-nonnull/testFn (param $0 i32) (result i32) + (func $export:assert-nonnull/testArr (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -591,7 +589,7 @@ 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 global.get $~lib/memory/__stack_pointer @@ -599,44 +597,21 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 i32.eqz if i32.const 1056 i32.const 1184 - i32.const 35 + i32.const 19 i32.const 10 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load - call_indirect (type $1) - unreachable - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:assert-nonnull/testFn2 (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -654,23 +629,50 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=12 i32.eqz if - i32.const 1056 - i32.const 1184 - i32.const 39 - i32.const 13 + i32.const 1248 + i32.const 1312 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=4 i32.load - call_indirect (type $1) - unreachable + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1360 + i32.const 1312 + i32.const 118 + i32.const 40 + 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.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 34256 i32.const 34304 @@ -679,7 +681,8 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testRet (param $0 i32) (result i32) + (func $export:assert-nonnull/testAll2 (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -694,7 +697,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -702,18 +705,47 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=12 local.get $0 i32.eqz br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load - call_indirect (type $1) - unreachable + local.tee $0 + i32.store offset=16 + local.get $0 + i32.eqz + br_if $folding-inner1 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end i32.const 34256 i32.const 34304 @@ -724,66 +756,13 @@ end i32.const 1056 i32.const 1184 - i32.const 44 + i32.const 31 i32.const 10 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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 1056 - i32.const 1184 - i32.const 48 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - call_indirect (type $1) - unreachable - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) + (func $export:assert-nonnull/testAll (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -798,7 +777,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -806,26 +785,47 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=8 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + call $~lib/array/Array#__get local.tee $0 - i32.store offset=4 + i32.store offset=12 local.get $0 i32.eqz br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load - call_indirect (type $1) - unreachable + local.tee $0 + i32.store offset=16 + local.get $0 + i32.eqz + br_if $folding-inner1 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end i32.const 34256 i32.const 34304 @@ -836,7 +836,7 @@ end i32.const 1056 i32.const 1184 - i32.const 52 + i32.const 27 i32.const 10 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/assignment-chain.release.wat b/tests/compiler/assignment-chain.release.wat index f8c5311e9e..fb11835ac0 100644 --- a/tests/compiler/assignment-chain.release.wat +++ b/tests/compiler/assignment-chain.release.wat @@ -5,8 +5,8 @@ (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -39,51 +39,6 @@ (export "static_setter_assignment_chain" (func $assignment-chain/static_setter_assignment_chain)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -628,1012 +583,914 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (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.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.set $4 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $3 - i32.const 4 + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 end - local.get $3 - local.get $1 + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 i32.const 16 + i32.shl + i32.const 4 i32.sub - local.tee $5 - i32.eq + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end + local.get $5 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.load + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + i32.gt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - local.get $3 - i32.const 8 + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub local.tee $3 - i32.const 1 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $assignment-chain/B + block $assignment-chain/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - unreachable - end - i32.const 34304 - i32.const 0 - i32.store - i32.const 35872 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl - i32.const 34304 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34304 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $1 end - end - i32.const 34304 - i32.const 35876 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34304 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34300 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.load offset=4 + local.get $1 + i32.ctz local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne if i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 1392 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34300 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34300 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.const 4 - i32.shr_u - local.set $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $1 - i32.const 536870910 + i32.const 0 + end + if + unreachable + end + i32.const 34304 + i32.const 0 + i32.store + i32.const 35872 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 i32.lt_u if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub + local.get $0 + i32.const 2 i32.shl + i32.const 34304 i32.add - i32.const 1 - i32.sub + i32.const 0 + i32.store offset=4 + i32.const 0 local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 - i32.const 16 - i32.lt_u + i32.const 34304 + i32.const 35876 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 334 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.const 19 + i32.add + i32.const -16 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 i32.const 4 - i32.shl i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 + i32.const 1572 i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (func $~lib/object/Object#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 1532 + i32.lt_s if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 i32.eqz if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/rt/tlsf/ROOT - local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 16 + ) + (func $assignment-chain/static_setter_assignment_chain + global.get $assignment-chain/C._setter_cnt + i32.const 1 i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.set $assignment-chain/C._setter_cnt + global.get $assignment-chain/C._setter_cnt + i32.const 1 + i32.add + global.set $assignment-chain/C._setter_cnt + global.get $assignment-chain/C._setter_cnt + i32.const 2 + i32.ne if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 0 + i32.const 1456 + i32.const 45 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 + ) + (func $assignment-chain/setter_assignment_chain + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + 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 8 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and + 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 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - i32.lt_s + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const 0 + f64.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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $assignment-chain/B#set:y + local.get $1 + call $assignment-chain/B#set:y + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.const 2 + i32.ne if - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 1456 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 if i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 + i32.const 1456 + i32.const 31 + 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 $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $assignment-chain/normal_assignment_chain + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $assignment-chain/static_setter_assignment_chain - global.get $assignment-chain/C._setter_cnt - i32.const 1 - i32.add - global.set $assignment-chain/C._setter_cnt - global.get $assignment-chain/C._setter_cnt - i32.const 1 - i32.add - global.set $assignment-chain/C._setter_cnt - global.get $assignment-chain/C._setter_cnt - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $assignment-chain/B - block $assignment-chain/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34300 - 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 $assignment-chain/normal_assignment_chain - call $assignment-chain/setter_assignment_chain - call $assignment-chain/static_setter_assignment_chain - ) - (func $assignment-chain/normal_assignment_chain - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - br_if $folding-inner0 - 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 8 + global.set $~lib/memory/__stack_pointer + 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 + 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 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1742,158 +1599,301 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $assignment-chain/setter_assignment_chain + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34300 + 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 $assignment-chain/normal_assignment_chain + call $assignment-chain/setter_assignment_chain + call $assignment-chain/static_setter_assignment_chain + ) + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - br_if $folding-inner0 - 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 8 - 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 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/object/Object#constructor - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - f64.const 0 - f64.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 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $assignment-chain/B#set:y - local.get $1 - call $assignment-chain/B#set:y - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load - i32.const 2 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end i32.const 0 - i32.const 1456 - i32.const 30 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34300 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1456 - i32.const 31 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34300 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34300 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/object/Object#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 1532 - i32.lt_s - if - i32.const 34320 - i32.const 34368 - 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 0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/bigint-integration.release.wat b/tests/compiler/bigint-integration.release.wat index 65f0bbea0b..6702bb5684 100644 --- a/tests/compiler/bigint-integration.release.wat +++ b/tests/compiler/bigint-integration.release.wat @@ -14,9 +14,6 @@ (export "getInternalValue" (func $bigint-integration/getInternalValue)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $bigint-integration/getInternalValue (result i64) - i64.const 9007199254740991 - ) (func $~start global.get $~started if @@ -47,4 +44,7 @@ unreachable end ) + (func $bigint-integration/getInternalValue (result i64) + i64.const 9007199254740991 + ) ) diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat index 4e290228d0..4fa9022ad2 100644 --- a/tests/compiler/bindings/esm.release.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -2,22 +2,22 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func (param i32))) (type $2 (func (param i32) (result i32))) - (type $3 (func (result i32))) - (type $4 (func)) - (type $5 (func (param i32 i32 i32))) + (type $3 (func (param i32 i32 i32))) + (type $4 (func (result i32))) + (type $5 (func)) (type $6 (func (param i32 i32))) (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $9 (func (param f64) (result f64))) - (type $10 (func (param i64 i64) (result i64))) - (type $11 (func (result i64))) - (type $12 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $10 (func (param f64) (result f64))) + (type $11 (func (param i64 i64) (result i64))) + (type $12 (func (result i64))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E 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))) (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $bindings/esm/plainGlobal i32 (i32.const 1)) (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) (global $bindings/esm/stringGlobal i32 (i32.const 1056)) @@ -120,218 +120,6 @@ (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) (export "functionFunction" (func $export:bindings/esm/staticarrayU16)) - (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) - local.get $0 - local.get $1 - i64.add - ) - (func $bindings/esm/getMaxUnsigned32 (result i32) - i32.const -1 - ) - (func $bindings/esm/getMaxUnsigned64 (result i64) - i64.const -1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $bindings/esm/mutableStringGlobal - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1552 - call $~lib/rt/itcms/__visit - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1968 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 2096 - call $~lib/rt/itcms/__visit - i32.const 2160 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 35044 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - ) - (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 - if - i32.const 0 - i32.const 1424 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/toSpace - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 2208 - i32.load - i32.gt_u - if - i32.const 1552 - i32.const 1616 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - i32.const 2212 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $1 - 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 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -356,591 +144,407 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1696 - i32.const 268 - i32.const 14 + i32.const 1360 + i32.const 1424 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1696 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1360 i32.const 1696 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1696 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1696 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + 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 - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + 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 1696 - i32.const 234 + i32.const 1424 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub + global.get $~lib/rt/itcms/white local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz + 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 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + 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 + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/array/Array#get:length (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 2276 + i32.lt_s if - i32.const 0 - i32.const 1696 - i32.const 251 - i32.const 14 + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 35056 - i32.const 0 - i32.store - i32.const 36624 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 35056 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 35056 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 35056 - i32.const 36628 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 35056 - global.set $~lib/rt/tlsf/ROOT + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1202,51 +806,185 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u + (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 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 + i32.const 0 + i32.const 1424 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end local.get $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 2208 + i32.load + i32.gt_u + if + i32.const 1552 + i32.const 1616 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + i32.const 2212 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + 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 + ) + (func $~lib/typedarray/Int16Array#get:length (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 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + 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.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1257,628 +995,374 @@ if i32.const 0 i32.const 1696 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 - i32.eqz + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - i32.const 0 - i32.const 1696 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 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 + local.get $1 + i32.eqz if - i32.const 1360 - i32.const 1424 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1696 + i32.const 201 + i32.const 14 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$70 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1360 + i32.const 0 i32.const 1696 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 i32.add - i32.const -16 + local.get $2 + i32.const -4 i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $3 + i32.const 2 + i32.and if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + local.get $1 i32.const 4 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1696 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 i32.const 1696 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1696 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $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 $1 - i32.load offset=8 - local.set $3 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 - local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 i32.load offset=4 - i32.const 3 - i32.and + i32.const 1 + local.get $2 + i32.shl 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 + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 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 - i32.const 0 - local.get $0 - 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 + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 35044 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end return end local.get $0 + i32.load offset=8 + local.tee $0 i32.eqz if i32.const 0 i32.const 1424 - i32.const 295 - i32.const 14 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $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.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 - 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 - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $bindings/esm/newInternref (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 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - 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 - i32.const 0 - i32.const 15 - 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 - ) - (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 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 2096 - i32.const 1424 - i32.const 338 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - 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 - 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 - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 2160 - i32.const 1424 - i32.const 352 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) - (func $~lib/rt/itcms/__collect - 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 + i32.or + i32.store offset=4 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2039,189 +1523,84 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~setArgumentsLength (param $0 i32) + (func $export:bindings/esm/staticarrayU16 (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 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - global.set $~argumentsLength ) - (func $~start - global.get $~started + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 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 2276 + i32.lt_s if - return + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1 - global.set $~started - i32.const 1152 - i32.const 1 - f64.const 42 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 1184 - call $~lib/bindings/dom/console.log - global.get $~lib/bindings/dom/Math.E - call $~lib/bindings/dom/Math.log - drop - call $bindings/esm/Date_getTimezoneOffset - drop - memory.size - i32.const 16 - i32.shl - i32.const 35044 - i32.sub - i32.const 1 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - i32.const 1504 - global.set $~lib/rt/itcms/toSpace - i32.const 1652 - i32.const 1648 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1656 - i32.const 1648 + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1648 - global.set $~lib/rt/itcms/fromSpace - ) - (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + 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 - i32.const 8 - i32.sub + i32.const 4 + i32.add global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$284 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1760 - local.set $2 - br $__inlined_func$~lib/string/String#concat$284 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - local.get $0 - local.get $3 - memory.copy - local.get $2 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2245,14 +1624,14 @@ i32.store local.get $0 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2274,16 +1653,38 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 - i32.load offset=8 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 2 i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1856 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2307,545 +1708,413 @@ i32.store local.get $1 local.get $0 - i32.load offset=8 - i32.const 3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 i32.shr_u i32.ge_u if i32.const 1552 - i32.const 1792 - i32.const 1173 - i32.const 64 + i32.const 1856 + i32.const 78 + i32.const 41 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - 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 + i32.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 f32) - (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 - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.store - block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if local.get $1 - call $~lib/typedarray/Float32Array#get:length - local.get $5 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - 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 2276 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 134217727 - i32.gt_u - if - i32.const 1248 - i32.const 1296 - i32.const 19 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 3 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $2 - local.get $5 - i32.store - local.get $2 - local.get $5 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - br $__inlined_func$~lib/typedarray/Uint64Array#constructor - end - br $folding-inner1 + local.set $1 end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub local.tee $2 - i32.store offset=4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1552 - i32.const 1792 - i32.const 452 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $3 - local.get $5 - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - local.set $3 - loop $for-loop|1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/typedarray/Float32Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - 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 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1552 - i32.const 1792 - i32.const 1304 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $5 - local.get $4 - i64.trunc_sat_f32_u - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1696 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - return + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/staticarray/StaticArray#__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 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 35056 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36624 + i32.const 0 i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 35056 + i32.const 36628 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 35056 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u + i64.extend_i32_u + i64.lt_u if - i32.const 1552 - i32.const 1856 - i32.const 78 - i32.const 41 + i32.const 0 + i32.const 1696 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $0 - i32.const 20 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 1552 - i32.const 1856 - i32.const 93 - i32.const 41 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.and + local.get $3 + i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - 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 + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer + 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 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + local.get $3 + i32.store offset=1568 local.get $0 - i32.load offset=12 - i32.ge_u + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $bindings/esm/mutableStringGlobal + local.tee $0 if - i32.const 1552 - i32.const 1920 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1968 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 2096 + call $~lib/rt/itcms/__visit + i32.const 2160 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) @@ -2975,9 +2244,144 @@ i32.store offset=8 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $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 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + 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.store + 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 1552 + i32.const 1920 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1552 + i32.const 1920 + i32.const 114 + i32.const 42 + 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 $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1968 + i32.const 1920 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + 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#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3047,9 +2451,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__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 global.get $~lib/memory/__stack_pointer @@ -3064,8 +2468,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3084,7 +2488,6 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 local.get $1 @@ -3092,210 +2495,339 @@ i32.shl i32.add i32.load - local.tee $0 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/stringFunction (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$284 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1760 + local.set $2 + br $__inlined_func$~lib/string/String#concat$284 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + i32.const 1152 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1184 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + call $bindings/esm/Date_getTimezoneOffset + drop + memory.size + i32.const 16 + i32.shl + i32.const 35044 + i32.sub + i32.const 1 + 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 + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if - i32.const 1968 - i32.const 1920 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable + 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>#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 + i32.const 2160 + i32.const 1424 + i32.const 352 + i32.const 5 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq if local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1552 - i32.const 1920 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 local.get $1 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $0 - local.get $3 - i32.store offset=12 + local.get $1 + i32.store offset=8 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__pin (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $0 + if local.get $0 i32.const 20 i32.sub - i32.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $4 - local.get $2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $5 - i32.const 1073741820 - i32.gt_u + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq if - i32.const 1248 - i32.const 1296 - i32.const 52 - i32.const 43 + i32.const 2096 + i32.const 1424 + i32.const 338 + i32.const 7 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - 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 + call $~lib/rt/itcms/Object#unlink + 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 + i32.or i32.store offset=4 - local.get $5 - local.get $0 + local.get $1 local.get $2 - memory.copy + i32.store offset=8 local.get $2 - local.get $5 - i32.add local.get $1 - local.get $4 - memory.copy - global.get $~lib/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 $5 - return + 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/__collect + 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 - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold ) - (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3319,7 +2851,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/stringFunction + call $bindings/esm/typedarrayFunction global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3397,7 +2929,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3421,7 +2953,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/typedarrayFunction + call $bindings/esm/stringFunction global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3619,9 +3151,265 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + (func $export:bindings/esm/objectFunction (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 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + 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 + block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + 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 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=18 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=40 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 0 + f32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 0 + f64.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=56 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=60 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=64 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$bindings/esm/PlainObject#constructor$4 + end + br $folding-inner1 + end + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load8_s + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $3 + local.get $1 + i32.load8_s + i32.add + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load16_s offset=2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $1 + i32.load16_s offset=2 + i32.add + i32.store16 offset=2 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3639,12 +3427,128 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/bufferFunction (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $5 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/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 $5 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3666,7 +3570,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3677,8 +3581,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3693,7 +3597,7 @@ call $~lib/array/Array#get:length local.get $4 i32.add - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -3710,39 +3614,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 11 + i32.const 12 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store - local.get $6 + local.get $5 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 268435455 i32.gt_u if @@ -3755,54 +3659,54 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 8 i32.le_u select i32.const 2 i32.shl - local.tee $3 + local.tee $6 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=12 - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 + local.get $5 local.get $6 - local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 local.get $5 + local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 loop $for-loop|0 global.get $~lib/memory/__stack_pointer @@ -3814,17 +3718,22 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $6 - local.get $2 + i32.store offset=12 local.get $0 local.get $2 - call $~lib/array/Array#__get - call $~lib/array/Array#__set + call $~lib/array/Array<~lib/string/String>#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $5 + local.get $2 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__set local.get $2 i32.const 1 i32.add @@ -3844,11 +3753,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=12 local.get $0 call $~lib/array/Array#get:length local.get $2 @@ -3856,13 +3765,18 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=12 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=8 - local.get $6 + local.get $5 local.get $3 - local.get $1 - local.get $2 - call $~lib/array/Array#__get - call $~lib/array/Array#__set + local.get $4 + call $~lib/array/Array<~lib/string/String>#__set local.get $2 i32.const 1 i32.add @@ -3871,14 +3785,14 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 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 $6 + local.get $5 return end i32.const 35072 @@ -3888,7 +3802,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3910,7 +3824,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3921,8 +3835,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3937,7 +3851,7 @@ call $~lib/array/Array#get:length local.get $4 i32.add - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -3954,39 +3868,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 12 + i32.const 11 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 268435455 i32.gt_u if @@ -3999,54 +3913,54 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $4 - local.get $4 + local.get $5 + local.get $5 i32.const 8 i32.le_u select i32.const 2 i32.shl - local.tee $6 + local.tee $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=12 - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.store - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 local.get $6 + local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 + local.get $6 local.get $5 - local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 loop $for-loop|0 global.get $~lib/memory/__stack_pointer @@ -4058,22 +3972,17 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.store offset=8 - local.get $5 + local.get $6 local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#__set + local.get $0 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set local.get $2 i32.const 1 i32.add @@ -4093,11 +4002,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 + i32.store offset=8 local.get $0 call $~lib/array/Array#get:length local.get $2 @@ -4105,18 +4014,13 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=12 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 i32.store offset=8 - local.get $5 + local.get $6 local.get $3 - local.get $4 - call $~lib/array/Array<~lib/string/String>#__set + local.get $1 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set local.get $2 i32.const 1 i32.add @@ -4125,14 +4029,14 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 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 $5 + local.get $6 return end i32.const 35072 @@ -4142,28 +4046,18 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2276 i32.lt_s @@ -4175,7 +4069,21 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $5 + i32.add + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4189,8 +4097,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 68 - i32.const 13 + i32.const 12 + i32.const 7 call $~lib/rt/itcms/__new local.tee $2 i32.store @@ -4199,7 +4107,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4207,187 +4115,259 @@ i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 + i32.const 12 + i32.const 3 call $~lib/rt/itcms/__new local.tee $2 i32.store end 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 - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store16 offset=2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store8 offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 + i32.store local.get $2 i32.const 0 - i32.store16 offset=18 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i64.store offset=24 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $2 i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=36 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store8 offset=40 + i32.store offset=8 + local.get $5 + i32.const 134217727 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 0 - f32.store offset=44 + local.get $5 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 - local.get $2 - f64.const 0 - f64.store offset=48 global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=56 + local.get $5 + i32.store local.get $2 - i32.const 0 + local.get $5 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 0 - i32.store offset=60 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $5 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 0 - i32.store offset=64 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 - br $__inlined_func$bindings/esm/PlainObject#constructor$4 + br $__inlined_func$~lib/typedarray/Uint64Array#constructor end br $folding-inner1 end local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load8_s + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + local.get $5 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $3 - local.get $1 - i32.load8_s - i32.add - i32.store8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load16_s offset=2 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $1 - i32.load16_s offset=2 - i32.add - i32.store16 offset=2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + 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 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + local.get $4 + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 return end @@ -4398,9 +4378,20 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/newInternref (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4415,15 +4406,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $bindings/esm/getMaxUnsigned64 (result i64) + i64.const -1 + ) + (func $bindings/esm/getMaxUnsigned32 (result i32) + i32.const -1 + ) ) diff --git a/tests/compiler/bindings/noExportRuntime.release.wat b/tests/compiler/bindings/noExportRuntime.release.wat index db259e3e71..8db482731d 100644 --- a/tests/compiler/bindings/noExportRuntime.release.wat +++ b/tests/compiler/bindings/noExportRuntime.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func (result i32))) (type $1 (func (param i32))) - (type $2 (func)) - (type $3 (func (param i32 i32))) + (type $2 (func (param i32 i32))) + (type $3 (func)) (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -68,203 +68,6 @@ (export "_start" (func $~start)) (export "takesNonPlainObject" (func $export:bindings/noExportRuntime/takesNonPlainObject)) (export "takesFunction" (func $export:bindings/noExportRuntime/takesNonPlainObject)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $bindings/noExportRuntime/isBuffer - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $bindings/noExportRuntime/isTypedArray - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1632 - call $~lib/rt/itcms/__visit - i32.const 1712 - call $~lib/rt/itcms/__visit - i32.const 1392 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1200 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1264 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$132 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34548 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$132 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1744 - i32.load - i32.gt_u - if - i32.const 1392 - i32.const 1456 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1748 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -289,330 +92,387 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1536 - i32.const 268 - i32.const 14 + i32.const 1200 + i32.const 1264 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1536 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 i32.const 1536 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1536 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1536 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 local.get $3 + local.get $2 + local.get $3 + 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 - local.tee $2 - i32.const 12 - i32.lt_u + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1536 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1536 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -620,520 +480,575 @@ if i32.const 0 i32.const 1536 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.tee $1 + i32.load offset=96 + i32.eq if - i32.const 0 - i32.const 1536 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1536 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1536 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1536 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1536 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34560 - i32.const 0 - i32.store - i32.const 36128 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34560 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34560 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - i32.const 34560 - i32.const 36132 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34560 - global.set $~lib/rt/tlsf/ROOT + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (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 + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34548 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1264 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.load offset=8 i32.eqz - local.get $1 - i32.const 3 + local.get $0 + i32.const 34548 + i32.lt_u i32.and - i32.ne + i32.eqz if i32.const 0 i32.const 1264 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 34548 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34548 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1744 + i32.load + i32.gt_u + if + i32.const 1392 + i32.const 1456 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1748 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $bindings/noExportRuntime/NonPlainObject + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/typedarray/Int32Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int32Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $bindings/noExportRuntime/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 end - global.get $~lib/rt/tlsf/ROOT - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 15 - i32.and - i32.const 1 + i32.store local.get $0 - select - if (result i32) - i32.const 1 - else + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $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.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1536 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + br $folding-inner1 end + return end - i32.const 10 - return + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1232,526 +1147,360 @@ local.get $0 local.get $1 i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1200 - i32.const 1264 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1200 - i32.const 1536 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - local.get $5 + i32.const 0 end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34560 + i32.const 0 + i32.store + i32.const 36128 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34560 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1536 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $5 + i32.const 34560 + i32.const 36132 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34560 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1536 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + local.get $1 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1536 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $3 + i32.store offset=1568 local.get $0 local.get $1 - i32.store - local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $bindings/noExportRuntime/isBuffer + local.tee $0 if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isTypedArray + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1632 + call $~lib/rt/itcms/__visit + i32.const 1712 + call $~lib/rt/itcms/__visit + i32.const 1392 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.ne 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 + i32.const 3 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end - ) - (func $bindings/noExportRuntime/takesReturnsBasic (param $0 i32) (result i32) - global.get $bindings/noExportRuntime/isBasic - ) - (func $bindings/noExportRuntime/returnsString (result i32) - i32.const 1056 - ) - (func $bindings/noExportRuntime/returnsBuffer (result i32) - global.get $bindings/noExportRuntime/isBuffer - ) - (func $bindings/noExportRuntime/returnsTypedArray (result i32) - global.get $bindings/noExportRuntime/isTypedArray - ) - (func $bindings/noExportRuntime/returnsArrayOfBasic (result i32) - i32.const 1632 - ) - (func $bindings/noExportRuntime/returnsArrayOfArray (result i32) - i32.const 1712 - ) - (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 $bindings/noExportRuntime/NonPlainObject - block $~lib/array/Array<~lib/array/Array> - block $~lib/array/Array - block $~lib/typedarray/Int32Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int32Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $bindings/noExportRuntime/NonPlainObject $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1780 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - 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 1780 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + ) + (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 1264 + i32.const 295 + 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 + local.get $0 + i32.const 3 + i32.eq + i32.and + if local.get $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 - br $folding-inner1 + call $~lib/rt/itcms/Object#makeGray end - return end - unreachable end + end + ) + (func $export:bindings/noExportRuntime/takesNonPlainObject (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 1780 + i32.lt_s + if i32.const 34576 i32.const 34624 i32.const 1 @@ -1762,9 +1511,6 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1882,95 +1628,349 @@ local.tee $0 i32.store end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~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 + local.get $0 + global.set $bindings/noExportRuntime/isTypedArray + br $__inlined_func$start:bindings/noExportRuntime + end + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34548 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 1 - call $~lib/rt/itcms/__new + i32.load offset=4 local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~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 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end local.get $0 - global.set $bindings/noExportRuntime/isTypedArray - br $__inlined_func$start:bindings/noExportRuntime + i32.const 34548 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34548 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1536 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - i32.const 34576 - i32.const 34624 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) - (func $export:bindings/noExportRuntime/takesNonPlainObject (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 1780 - i32.lt_s - if - i32.const 34576 - i32.const 34624 - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + (func $bindings/noExportRuntime/takesReturnsBasic (param $0 i32) (result i32) + global.get $bindings/noExportRuntime/isBasic + ) + (func $bindings/noExportRuntime/returnsTypedArray (result i32) + global.get $bindings/noExportRuntime/isTypedArray + ) + (func $bindings/noExportRuntime/returnsString (result i32) + i32.const 1056 + ) + (func $bindings/noExportRuntime/returnsBuffer (result i32) + global.get $bindings/noExportRuntime/isBuffer + ) + (func $bindings/noExportRuntime/returnsArrayOfBasic (result i32) + i32.const 1632 + ) + (func $bindings/noExportRuntime/returnsArrayOfArray (result i32) + i32.const 1712 ) ) diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat index 63fdd8c27a..6d66004d1a 100644 --- a/tests/compiler/bindings/raw.release.wat +++ b/tests/compiler/bindings/raw.release.wat @@ -2,22 +2,22 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func (param i32))) (type $2 (func (param i32) (result i32))) - (type $3 (func (result i32))) - (type $4 (func)) - (type $5 (func (param i32 i32 i32))) + (type $3 (func (param i32 i32 i32))) + (type $4 (func (result i32))) + (type $5 (func)) (type $6 (func (param i32 i32))) (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $9 (func (param f64) (result f64))) - (type $10 (func (param i64 i64) (result i64))) - (type $11 (func (result i64))) - (type $12 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $10 (func (param f64) (result f64))) + (type $11 (func (param i64 i64) (result i64))) + (type $12 (func (result i64))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E 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))) (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $bindings/esm/plainGlobal i32 (i32.const 1)) (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) (global $bindings/esm/stringGlobal i32 (i32.const 1056)) @@ -120,218 +120,6 @@ (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) (export "functionFunction" (func $export:bindings/esm/staticarrayU16)) - (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) - local.get $0 - local.get $1 - i64.add - ) - (func $bindings/esm/getMaxUnsigned32 (result i32) - i32.const -1 - ) - (func $bindings/esm/getMaxUnsigned64 (result i64) - i64.const -1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1552 - call $~lib/rt/itcms/__visit - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1968 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 2096 - call $~lib/rt/itcms/__visit - i32.const 2160 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $bindings/esm/mutableStringGlobal - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 35044 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - ) - (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 - if - i32.const 0 - i32.const 1424 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/toSpace - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 2208 - i32.load - i32.gt_u - if - i32.const 1552 - i32.const 1616 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - i32.const 2212 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $1 - 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 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -356,591 +144,407 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1696 - i32.const 268 - i32.const 14 + i32.const 1360 + i32.const 1424 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1696 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1360 i32.const 1696 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1696 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1696 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + 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 - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + 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 1696 - i32.const 234 + i32.const 1424 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub + global.get $~lib/rt/itcms/white local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz + 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 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + 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 + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/array/Array#get:length (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 2276 + i32.lt_s if - i32.const 0 - i32.const 1696 - i32.const 251 - i32.const 14 + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 35056 - i32.const 0 - i32.store - i32.const 36624 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 35056 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 35056 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 35056 - i32.const 36628 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 35056 - global.set $~lib/rt/tlsf/ROOT + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1202,51 +806,185 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u + (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 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 + i32.const 0 + i32.const 1424 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end local.get $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 2208 + i32.load + i32.gt_u + if + i32.const 1552 + i32.const 1616 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + i32.const 2212 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + 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 + ) + (func $~lib/typedarray/Int16Array#get:length (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 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + 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.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1257,628 +995,374 @@ if i32.const 0 i32.const 1696 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 - i32.eqz + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - i32.const 0 - i32.const 1696 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 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 + local.get $1 + i32.eqz if - i32.const 1360 - i32.const 1424 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1696 + i32.const 201 + i32.const 14 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$71 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$71 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1360 + i32.const 0 i32.const 1696 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 i32.add - i32.const -16 + local.get $2 + i32.const -4 i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $3 + i32.const 2 + i32.and if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + local.get $1 i32.const 4 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1696 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 i32.const 1696 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1696 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $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 $1 - i32.load offset=8 - local.set $3 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 - local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 i32.load offset=4 - i32.const 3 - i32.and + i32.const 1 + local.get $2 + i32.shl 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 + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 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 - i32.const 0 - local.get $0 - 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 + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 35044 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end return end local.get $0 + i32.load offset=8 + local.tee $0 i32.eqz if i32.const 0 i32.const 1424 - i32.const 295 - i32.const 14 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $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.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 - 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 - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $bindings/esm/newInternref (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 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - 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 - i32.const 0 - i32.const 15 - 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 - ) - (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 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 2096 - i32.const 1424 - i32.const 338 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - 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 - 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 - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 2160 - i32.const 1424 - i32.const 352 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) - (func $~lib/rt/itcms/__collect - 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 + i32.or + i32.store offset=4 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2039,189 +1523,84 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~setArgumentsLength (param $0 i32) + (func $export:bindings/esm/staticarrayU16 (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 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - global.set $~argumentsLength ) - (func $~start - global.get $~started + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 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 2276 + i32.lt_s if - return + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1 - global.set $~started - i32.const 1152 - i32.const 1 - f64.const 42 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 1184 - call $~lib/bindings/dom/console.log - global.get $~lib/bindings/dom/Math.E - call $~lib/bindings/dom/Math.log - drop - call $bindings/esm/Date_getTimezoneOffset - drop - memory.size - i32.const 16 - i32.shl - i32.const 35044 - i32.sub - i32.const 1 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - i32.const 1504 - global.set $~lib/rt/itcms/toSpace - i32.const 1652 - i32.const 1648 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1656 - i32.const 1648 + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1648 - global.set $~lib/rt/itcms/fromSpace - ) - (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + 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 - i32.const 8 - i32.sub + i32.const 4 + i32.add global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$285 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1760 - local.set $2 - br $__inlined_func$~lib/string/String#concat$285 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - local.get $0 - local.get $3 - memory.copy - local.get $2 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2245,14 +1624,14 @@ i32.store local.get $0 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2274,16 +1653,38 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 - i32.load offset=8 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 2 i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1856 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2307,545 +1708,413 @@ i32.store local.get $1 local.get $0 - i32.load offset=8 - i32.const 3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 i32.shr_u i32.ge_u if i32.const 1552 - i32.const 1792 - i32.const 1173 - i32.const 64 + i32.const 1856 + i32.const 78 + i32.const 41 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - 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 + i32.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 f32) - (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 - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.store - block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if local.get $1 - call $~lib/typedarray/Float32Array#get:length - local.get $5 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - 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 2276 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 134217727 - i32.gt_u - if - i32.const 1248 - i32.const 1296 - i32.const 19 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 3 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $2 - local.get $5 - i32.store - local.get $2 - local.get $5 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - br $__inlined_func$~lib/typedarray/Uint64Array#constructor - end - br $folding-inner1 + local.set $1 end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub local.tee $2 - i32.store offset=4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1552 - i32.const 1792 - i32.const 452 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $3 - local.get $5 - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - local.set $3 - loop $for-loop|1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/typedarray/Float32Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - 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 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1552 - i32.const 1792 - i32.const 1304 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $5 - local.get $4 - i64.trunc_sat_f32_u - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1696 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - return + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/staticarray/StaticArray#__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 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 35056 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36624 + i32.const 0 i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 35056 + i32.const 36628 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 35056 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u + i64.extend_i32_u + i64.lt_u if - i32.const 1552 - i32.const 1856 - i32.const 78 - i32.const 41 + i32.const 0 + i32.const 1696 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $0 - i32.const 20 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 1552 - i32.const 1856 - i32.const 93 - i32.const 41 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.and + local.get $3 + i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - 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 + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer + 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 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + local.get $3 + i32.store offset=1568 local.get $0 - i32.load offset=12 - i32.ge_u + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1968 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 2096 + call $~lib/rt/itcms/__visit + i32.const 2160 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $bindings/esm/mutableStringGlobal + local.tee $0 if - i32.const 1552 - i32.const 1920 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) @@ -2975,9 +2244,144 @@ i32.store offset=8 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $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 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + 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.store + 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 1552 + i32.const 1920 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1552 + i32.const 1920 + i32.const 114 + i32.const 42 + 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 $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1968 + i32.const 1920 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + 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#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3047,9 +2451,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__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 global.get $~lib/memory/__stack_pointer @@ -3064,8 +2468,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3084,7 +2488,6 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 local.get $1 @@ -3092,210 +2495,339 @@ i32.shl i32.add i32.load - local.tee $0 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/stringFunction (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$285 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1760 + local.set $2 + br $__inlined_func$~lib/string/String#concat$285 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + i32.const 1152 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1184 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + call $bindings/esm/Date_getTimezoneOffset + drop + memory.size + i32.const 16 + i32.shl + i32.const 35044 + i32.sub + i32.const 1 + 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 + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if - i32.const 1968 - i32.const 1920 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable + 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>#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 + i32.const 2160 + i32.const 1424 + i32.const 352 + i32.const 5 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq if local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1552 - i32.const 1920 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 local.get $1 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $0 - local.get $3 - i32.store offset=12 + local.get $1 + i32.store offset=8 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__pin (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $0 + if local.get $0 i32.const 20 i32.sub - i32.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $4 - local.get $2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $5 - i32.const 1073741820 - i32.gt_u + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq if - i32.const 1248 - i32.const 1296 - i32.const 52 - i32.const 43 + i32.const 2096 + i32.const 1424 + i32.const 338 + i32.const 7 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - 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 + call $~lib/rt/itcms/Object#unlink + 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 + i32.or i32.store offset=4 - local.get $5 - local.get $0 + local.get $1 local.get $2 - memory.copy + i32.store offset=8 local.get $2 - local.get $5 - i32.add local.get $1 - local.get $4 - memory.copy - global.get $~lib/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 $5 - return + 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/__collect + 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 - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold ) - (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3319,7 +2851,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/stringFunction + call $bindings/esm/typedarrayFunction global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3397,7 +2929,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3421,7 +2953,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/typedarrayFunction + call $bindings/esm/stringFunction global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3619,9 +3151,265 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + (func $export:bindings/esm/objectFunction (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 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + 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 + block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + 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 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=18 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=40 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 0 + f32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 0 + f64.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=56 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=60 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=64 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$bindings/esm/PlainObject#constructor$4 + end + br $folding-inner1 + end + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load8_s + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $3 + local.get $1 + i32.load8_s + i32.add + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load16_s offset=2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $1 + i32.load16_s offset=2 + i32.add + i32.store16 offset=2 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3639,12 +3427,128 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/bufferFunction (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $5 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/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 $5 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3666,7 +3570,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3677,8 +3581,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3693,7 +3597,7 @@ call $~lib/array/Array#get:length local.get $4 i32.add - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -3710,39 +3614,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 11 + i32.const 12 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store - local.get $6 + local.get $5 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 268435455 i32.gt_u if @@ -3755,54 +3659,54 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 8 i32.le_u select i32.const 2 i32.shl - local.tee $3 + local.tee $6 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=12 - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 + local.get $5 local.get $6 - local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 local.get $5 + local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 loop $for-loop|0 global.get $~lib/memory/__stack_pointer @@ -3814,17 +3718,22 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $6 - local.get $2 + i32.store offset=12 local.get $0 local.get $2 - call $~lib/array/Array#__get - call $~lib/array/Array#__set + call $~lib/array/Array<~lib/string/String>#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $5 + local.get $2 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__set local.get $2 i32.const 1 i32.add @@ -3844,11 +3753,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=12 local.get $0 call $~lib/array/Array#get:length local.get $2 @@ -3856,13 +3765,18 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=12 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=8 - local.get $6 + local.get $5 local.get $3 - local.get $1 - local.get $2 - call $~lib/array/Array#__get - call $~lib/array/Array#__set + local.get $4 + call $~lib/array/Array<~lib/string/String>#__set local.get $2 i32.const 1 i32.add @@ -3871,14 +3785,14 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 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 $6 + local.get $5 return end i32.const 35072 @@ -3888,7 +3802,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3910,7 +3824,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3921,8 +3835,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3937,7 +3851,7 @@ call $~lib/array/Array#get:length local.get $4 i32.add - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -3954,39 +3868,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 12 + i32.const 11 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 268435455 i32.gt_u if @@ -3999,54 +3913,54 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $4 - local.get $4 + local.get $5 + local.get $5 i32.const 8 i32.le_u select i32.const 2 i32.shl - local.tee $6 + local.tee $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=12 - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.store - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 local.get $6 + local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 + local.get $6 local.get $5 - local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 loop $for-loop|0 global.get $~lib/memory/__stack_pointer @@ -4058,22 +3972,17 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.store offset=8 - local.get $5 + local.get $6 local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#__set + local.get $0 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set local.get $2 i32.const 1 i32.add @@ -4093,11 +4002,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 + i32.store offset=8 local.get $0 call $~lib/array/Array#get:length local.get $2 @@ -4105,18 +4014,13 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=12 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 i32.store offset=8 - local.get $5 + local.get $6 local.get $3 - local.get $4 - call $~lib/array/Array<~lib/string/String>#__set + local.get $1 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set local.get $2 i32.const 1 i32.add @@ -4125,14 +4029,14 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 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 $5 + local.get $6 return end i32.const 35072 @@ -4142,28 +4046,18 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2276 i32.lt_s @@ -4175,7 +4069,21 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $5 + i32.add + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4189,8 +4097,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 68 - i32.const 13 + i32.const 12 + i32.const 7 call $~lib/rt/itcms/__new local.tee $2 i32.store @@ -4199,7 +4107,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4207,187 +4115,259 @@ i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 + i32.const 12 + i32.const 3 call $~lib/rt/itcms/__new local.tee $2 i32.store end 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 - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store16 offset=2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store8 offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 + i32.store local.get $2 i32.const 0 - i32.store16 offset=18 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i64.store offset=24 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $2 i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=36 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store8 offset=40 + i32.store offset=8 + local.get $5 + i32.const 134217727 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 0 - f32.store offset=44 + local.get $5 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 - local.get $2 - f64.const 0 - f64.store offset=48 global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=56 + local.get $5 + i32.store local.get $2 - i32.const 0 + local.get $5 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 0 - i32.store offset=60 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $5 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 0 - i32.store offset=64 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 - br $__inlined_func$bindings/esm/PlainObject#constructor$4 + br $__inlined_func$~lib/typedarray/Uint64Array#constructor end br $folding-inner1 end local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load8_s + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + local.get $5 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $3 - local.get $1 - i32.load8_s - i32.add - i32.store8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load16_s offset=2 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $1 - i32.load16_s offset=2 - i32.add - i32.store16 offset=2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + 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 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + local.get $4 + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 return end @@ -4398,9 +4378,20 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/newInternref (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4415,15 +4406,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $bindings/esm/getMaxUnsigned64 (result i64) + i64.const -1 + ) + (func $bindings/esm/getMaxUnsigned32 (result i32) + i32.const -1 + ) ) diff --git a/tests/compiler/builtins.release.wat b/tests/compiler/builtins.release.wat index b10096a932..856132d52c 100644 --- a/tests/compiler/builtins.release.wat +++ b/tests/compiler/builtins.release.wat @@ -70,19 +70,6 @@ (export "test" (func $start:builtins~anonymous|1)) (export "memory" (memory $0)) (start $~start) - (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:builtins~anonymous|1 - ) - (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - unreachable - ) - (func $~start - call $start:builtins - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -245,6 +232,19 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $start:builtins~anonymous|1 + ) + (func $~start + call $start:builtins + ) + (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + unreachable + ) + (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) (func $start:builtins global.get $~lib/memory/__stack_pointer i32.const 8 diff --git a/tests/compiler/call-inferred.release.wat b/tests/compiler/call-inferred.release.wat index da1bbfa46e..07fa104b08 100644 --- a/tests/compiler/call-inferred.release.wat +++ b/tests/compiler/call-inferred.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -35,51 +35,6 @@ (data $9 (i32.const 1504) "\07\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/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1312 - call $~lib/rt/itcms/__visit - i32.const 1120 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1184 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -232,77 +187,391 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1456 - i32.const 268 - i32.const 14 + i32.const 1120 + i32.const 1184 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1120 i32.const 1456 - i32.const 270 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + local.get $4 + local.get $2 + i32.const 12 + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 i32.sub - local.set $2 - local.get $3 + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u + local.get $5 local.get $2 - i32.const 23 - i32.lt_u + i32.load + i32.const -4 i32.and - i32.eqz + i32.gt_u + if + i32.const 0 + i32.const 1456 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1456 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1456 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if i32.const 0 i32.const 1456 @@ -624,119 +893,208 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $call-inferred/Baz + block $call-inferred/Bar + block $call-inferred/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + unreachable + ) + (func $call-inferred/Foo#constructor (param $0 i32) (result 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 1536 + i32.lt_s if - i32.const 0 - i32.const 1456 - i32.const 382 - i32.const 14 + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 + 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 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 42 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=1568 - local.tee $3 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1456 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1456 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1456 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -818,976 +1176,618 @@ i32.const 34304 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1456 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34304 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1456 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1456 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1312 + call $~lib/rt/itcms/__visit + i32.const 1120 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1184 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34304 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34304 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1456 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 + (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1536 + 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 34304 + i32.sub + i32.const 1 i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u + global.set $~lib/rt/itcms/threshold + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/pinSpace + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/toSpace + i32.const 1412 + i32.const 1408 + i32.store + i32.const 1416 + i32.const 1408 + i32.store + i32.const 1408 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $call-inferred/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 42 + i32.ne if - local.get $1 + i32.const 0 + i32.const 1056 + i32.const 22 i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $call-inferred/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 23 i32.const 1 - i32.sub - local.set $1 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 31 - local.get $1 - i32.clz + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~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 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1456 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.store local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load offset=96 - else + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1456 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else + 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $call-inferred/Foo#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 42 + i32.ne + if i32.const 0 + i32.const 1056 + 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 + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1120 - i32.const 1184 - i32.const 261 - 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$70 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1120 - i32.const 1456 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add i32.const 1 - i32.sub - else - local.get $5 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - unreachable + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34304 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1456 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1456 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1456 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $call-inferred/Baz - block $call-inferred/Bar - block $call-inferred/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid - end - return - end - return - end - return + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1184 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34304 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34304 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1456 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + local.get $2 + local.get $2 i32.load - call $~lib/rt/itcms/__visit - return + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - return end + i32.const 10 return end - return - end - unreachable - ) - (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1536 - 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 34304 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/pinSpace - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/toSpace - i32.const 1412 - i32.const 1408 - i32.store - i32.const 1416 - i32.const 1408 - i32.store - i32.const 1408 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - call $call-inferred/Foo#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $call-inferred/Foo#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - 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 8 - 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $call-inferred/Foo#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1056 - 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 - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $call-inferred/Foo#constructor (param $0 i32) (result 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 1536 - i32.lt_s - if - i32.const 34336 - i32.const 34384 - 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.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 42 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/call-optional.release.wat b/tests/compiler/call-optional.release.wat index 79b66938d4..7f53c6549f 100644 --- a/tests/compiler/call-optional.release.wat +++ b/tests/compiler/call-optional.release.wat @@ -13,30 +13,6 @@ (elem $0 (i32.const 1) $call-optional/opt@varargs) (export "memory" (memory $0)) (start $~start) - (func $call-optional/opt@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result 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 -1 - local.set $1 - end - i32.const -2 - local.set $2 - end - local.get $1 - i32.const 3 - i32.add - local.get $2 - i32.add - ) (func $~start i32.const 1 global.set $~argumentsLength @@ -95,4 +71,28 @@ unreachable end ) + (func $call-optional/opt@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result 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 -1 + local.set $1 + end + i32.const -2 + local.set $2 + end + local.get $1 + i32.const 3 + i32.add + local.get $2 + i32.add + ) ) diff --git a/tests/compiler/call-rest.release.wat b/tests/compiler/call-rest.release.wat index 8ba815046e..f36eff6343 100644 --- a/tests/compiler/call-rest.release.wat +++ b/tests/compiler/call-rest.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func (param i32 i32 i32) (result i32))) (type $1 (func (param i32 i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func)) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -77,184 +77,68 @@ (elem $0 (i32.const 1) $call-rest/fn@varargs) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1744 - call $~lib/rt/itcms/__visit - i32.const 1200 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + (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 2136 + i32.lt_s if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$160 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34904 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$160 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/toSpace - local.set $2 + 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 $1 i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2096 - i32.load - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 2100 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new local.set $3 local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + if + local.get $3 + local.get $2 + local.get $4 + memory.copy + end + local.get $3 + i32.store + i32.const 16 + local.get $1 + 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 - select - local.get $2 - i32.or i32.store offset=4 - local.get $0 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 - 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 @@ -280,1703 +164,1840 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1472 - i32.const 268 - i32.const 14 + i32.const 1200 + i32.const 1264 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1472 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 i32.const 1472 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1472 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 i32.const 1472 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1472 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + 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 - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + 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 1472 - i32.const 234 + i32.const 1264 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub + global.get $~lib/rt/itcms/white local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 + 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.shr_u - i32.const 16 - i32.xor + 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 + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/array/Array#get:length (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 2136 + i32.lt_s if - i32.const 0 - i32.const 1472 - i32.const 251 - i32.const 14 + i32.const 34928 + i32.const 34976 + 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 - local.get $5 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/count (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 2136 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 34928 + i32.const 34976 + 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 - local.get $5 + i32.store + local.get $0 + call $~lib/array/Array#get:length + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add - local.get $1 - i32.store offset=96 + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/Foo#sum (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 + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or + local.tee $3 i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + local.get $3 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 + global.set $~lib/memory/__stack_pointer local.get $2 - i32.shl - i32.or - i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1472 - i32.const 382 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $3 + i32.const -4 i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 local.tee $3 + i32.const 12 + i32.lt_u if + i32.const 0 + i32.const 1472 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.shr_u + else + i32.const 31 + i32.const 1073741820 local.get $3 - local.get $1 - i32.const 16 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub local.tee $3 - i32.const 20 + i32.const 16 i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1472 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 34912 - i32.const 0 - i32.store - i32.const 36480 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34912 i32.add - i32.const 0 + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34912 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 34912 - i32.const 36484 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34912 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34904 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 + if + i32.const 0 + i32.const 1264 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$160 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.load offset=8 i32.eqz - local.get $1 - i32.const 3 + local.get $0 + i32.const 34904 + i32.lt_u i32.and - i32.ne + i32.eqz if i32.const 0 i32.const 1264 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 34904 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34904 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + br $__inlined_func$~lib/rt/itcms/Object#unlink$160 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2096 + i32.load + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2100 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $call-rest/Foo + block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + 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 + call $~lib/array/Array~visit + return end - global.get $~lib/rt/tlsf/ROOT - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1472 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $1 - i32.ctz - local.tee $1 + local.get $0 + i32.load offset=12 i32.const 2 i32.shl i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + 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 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.ctz - local.get $1 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl i32.add - i32.load offset=96 - else - i32.const 0 + global.set $~lib/memory/__stack_pointer + return end + unreachable end + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (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 + (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 + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s if - i32.const 1200 - i32.const 1264 - i32.const 261 - i32.const 31 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + i32.const 1056 + i32.const 1120 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 16 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/fn@varargs (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 + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s if - i32.const 1200 - i32.const 1472 - i32.const 461 - i32.const 29 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if i32.const 0 - i32.const 1472 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1472 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.const 5 + i32.const 1168 + call $~lib/rt/__newArray + local.tee $2 + i32.store end - local.get $4 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/tlsf/removeBlock + i32.store offset=4 + local.get $1 local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + call $call-rest/fn + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 15 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/fn (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s if - i32.const 0 - i32.const 1472 - i32.const 361 - i32.const 14 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $0 + i32.add + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $call-rest/Foo#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 16 - i32.ge_u - if + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + 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 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or + i32.store offset=4 + local.get $2 + i32.const 0 i32.store local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=12 local.get $3 - i32.const 4 - i32.sub + i32.const 0 i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + local.get $0 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 local.get $2 - local.get $6 - i32.const -2 - i32.and + local.get $3 i32.store local.get $2 - i32.const 4 + local.get $3 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#get:length + local.set $7 + loop $for-loop|0 + local.get $0 + local.get $7 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/array/Array#__get + 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 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $6 + i32.load offset=12 + local.tee $4 + i32.const 1 + i32.add + local.tee $5 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + 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 16 i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + return end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.eqz + i32.const 256 + i32.lt_u if - return + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - local.get $0 + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 1264 - i32.const 295 + i32.const 1472 + i32.const 334 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 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const 3 + i32.const -1 + local.get $1 + i32.shl i32.and - i32.eq - if + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl 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 + local.tee $1 + if (result i32) local.get $0 - i32.const 3 - i32.eq - i32.and + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end end ) - (func $~lib/array/Array~visit (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 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 34912 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36480 + i32.const 0 i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - 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) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner0 - block $invalid - block $~lib/array/Array<~lib/string/String> - block $call-rest/Foo - block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - 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 - call $~lib/array/Array~visit - return - 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 2136 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - 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 2136 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - i32.load offset=12 i32.const 2 i32.shl + i32.const 34912 i32.add - local.set $2 - loop $while-continue|0 + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - local.get $2 + i32.const 16 i32.lt_u if + local.get $0 + i32.const 4 + i32.shl local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end + i32.add + i32.const 2 + i32.shl + i32.const 34912 + i32.add + i32.const 0 + i32.store offset=96 local.get $1 - i32.const 4 + i32.const 1 i32.add local.set $1 - br $while-continue|0 + br $for-loop|1 end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - end - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:call-rest + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34912 + i32.const 36484 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34912 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/array/Array#get:length (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 2136 - i32.lt_s + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 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.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 1056 - i32.const 1120 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $call-rest/fn (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.and + local.get $3 + i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - 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.tee $3 i32.const 1 - i32.add - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.or + i32.or i32.store local.get $1 - call $~lib/array/Array#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $0 - i32.add - local.set $0 - 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 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $call-rest/fn@varargs (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 - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1744 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - i32.const 1168 - call $~lib/rt/__newArray - local.tee $2 - i32.store end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $1 - local.get $2 - call $call-rest/fn - 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) (local $2 i32) @@ -2109,8 +2130,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/array/Array~visit (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2132,206 +2152,81 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - 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 1056 - i32.const 1120 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $call-rest/Foo#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - br_if $folding-inner0 - 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 4 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=12 - local.get $3 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 i32.const 1 - call $~lib/array/Array#__set - local.get $3 i32.const 1 - local.get $0 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $2 - local.get $3 - i32.store - local.get $2 - local.get $3 - call $~lib/rt/itcms/__link - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/array/Array#get:length - local.set $7 - loop $for-loop|0 - local.get $0 - local.get $7 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load - local.tee $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - 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 2136 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $6 - i32.load offset=12 - local.tee $4 - i32.const 1 - i32.add - local.tee $5 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + 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.store + 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 1056 + i32.const 1120 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 end - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $call-rest/Foo#constructor@varargs (param $0 i32) (result i32) (local $1 i32) @@ -2363,129 +2258,297 @@ global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + i32.const 1792 + call $~lib/rt/__newArray + local.tee $1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $call-rest/Foo#constructor + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:call-rest + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34904 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34904 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34904 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - unreachable end - i32.const 0 - local.set $0 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 5 - i32.const 1792 - call $~lib/rt/__newArray - local.tee $1 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $call-rest/Foo#constructor - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $call-rest/Foo#sum (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 - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store - local.get $3 - local.get $1 - call $~lib/array/Array#__get - local.get $2 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $call-rest/count (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 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $start:call-rest (local $0 i32) @@ -2899,67 +2962,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__newArray (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 - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - 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.const 2 - i32.shl - local.tee $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $4 - memory.copy - end - local.get $3 - i32.store - i32.const 16 - local.get $1 - 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 - ) ) diff --git a/tests/compiler/call-super.release.wat b/tests/compiler/call-super.release.wat index 5d0103b461..003836b8dc 100644 --- a/tests/compiler/call-super.release.wat +++ b/tests/compiler/call-super.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -35,728 +35,1066 @@ (data $9 (i32.const 1488) "\0e\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/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (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.eqz + i32.const 1073741804 + i32.ge_u if - return + i32.const 1104 + i32.const 1168 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$158 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34316 - i32.lt_u - i32.and + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state i32.eqz if - i32.const 0 - i32.const 1168 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$158 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if + local.get $2 i32.const 0 - i32.const 1168 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 2 + 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.const 1492 i32.add - i32.load - i32.const 32 - i32.and + global.set $~lib/rt/itcms/threshold end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1104 i32.const 1440 - i32.const 268 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 + local.get $4 + local.get $2 i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1440 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1440 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub local.get $1 - i32.store + i32.store offset=12 local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const -4 + i32.and + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 + i32.add + global.set $~lib/rt/itcms/total local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/white local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 - i32.const 4 - i32.add local.get $1 - i32.gt_u + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter end - local.get $3 + block $__inlined_func$~lib/rt/itcms/Object#unlink$158 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34316 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$158 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 i32.load - local.set $4 - local.get $5 - local.set $1 + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and end - else + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + 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/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.sub + i32.load local.tee $3 - i32.const 20 - i32.lt_u + i32.const 1 + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add local.get $3 - i32.add + i32.const -4 + i32.and local.tee $3 - i32.const 2 - i32.store - local.get $0 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s + i32.const 256 + i32.lt_u if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s + local.get $3 + i32.const 4 + i32.shr_u else - i32.const 0 - end - if - unreachable + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (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 + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~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 + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable end i32.const 34320 i32.const 0 @@ -805,18 +1143,215 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|0 + end + end + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end - i32.const 34320 - i32.const 35892 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34320 - global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/object/Object#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 1548 + i32.lt_s + if + i32.const 34336 + i32.const 34384 + 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 0 + i32.const 0 + 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 + ) + (func $~start + call $start:call-super ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -971,554 +1506,112 @@ return end global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34316 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34316 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 + i32.const 1168 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1104 - i32.const 1168 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1104 - i32.const 1440 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 + i32.const 34316 i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl + 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.const 1 i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34316 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end + i32.const 10 + return end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1440 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/rt/itcms/state end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 $1 i32.const 0 - local.get $0 - memory.fill - local.get $1 ) (func $start:call-super (local $0 i32) @@ -2232,97 +2325,4 @@ call $~lib/builtins/abort unreachable ) - (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 - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~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 - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:call-super - ) - (func $~lib/object/Object#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 1548 - i32.lt_s - if - i32.const 34336 - i32.const 34384 - 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 0 - i32.const 0 - 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 - ) ) diff --git a/tests/compiler/class-implements.release.wat b/tests/compiler/class-implements.release.wat index 7fb0b1217b..54da044a10 100644 --- a/tests/compiler/class-implements.release.wat +++ b/tests/compiler/class-implements.release.wat @@ -1,10 +1,10 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -42,104 +42,372 @@ (data $9 (i32.const 1504) "\15\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\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $class-implements/a - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-implements/c - local.tee $0 + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - global.get $class-implements/d - local.tee $0 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $class-implements/e - local.tee $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit + call $~lib/rt/tlsf/initialize end - global.get $class-implements/f - local.tee $0 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable end - global.get $class-implements/g - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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 - global.get $class-implements/h - local.tee $0 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne + local.get $3 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - local.get $0 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $class-implements/I2#get:foo@override (param $0 i32) (result i32) + block $case5 + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + block $tablify|0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.sub + br_table $case4 $tablify|0 $case0 $case1 $case5 $case2 $case3 $tablify|0 + end + unreachable + end + local.get $0 + i32.load + return + end + local.get $0 + i32.load + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + i32.load + return + end + local.get $0 + call $class-implements/B2#get:foo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 $1 @@ -281,63 +549,187 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (func $class-implements/B3#get:foo (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 1592 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 $~lib/object/Object#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 1592 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + 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 0 + i32.const 0 + 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 + ) + (func $class-implements/I2#set:foo@override (param $0 i32) (param $1 i32) + block $folding-inner0 + block $case5 + block $case3 + block $case2 + block $tablify|0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.sub + br_table $folding-inner0 $tablify|0 $folding-inner0 $folding-inner0 $case5 $case2 $case3 $tablify|0 + end + unreachable + end + local.get $0 + local.get $1 + call $class-implements/B3#set:foo + return + end + local.get $0 + local.get $1 + call $class-implements/B3#set:foo + return + 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 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + 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.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 + return + end + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u @@ -673,158 +1065,429 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-implements/B4 + block $class-implements/B3 + block $class-implements/B2 + block $class-implements/A4 + block $class-implements/A3 + block $class-implements/I2 + block $class-implements/A2 + block $class-implements/K + block $class-implements/G + block $class-implements/F + block $class-implements/E + block $class-implements/J + block $class-implements/D + block $class-implements/B + block $class-implements/C + block $class-implements/I + block $class-implements/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $class-implements/F#constructor (result i32) + (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 1592 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=1568 - local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-implements/D#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/D#constructor (param $0 i32) (result 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 1592 + i32.lt_s if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz if - return + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/B2#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + 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.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) + (func $class-implements/A2#constructor (param $0 i32) (result 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 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz if - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - i32.const 34368 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 i32.store - i32.const 35936 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 - i32.shl - i32.const 34368 - i32.add - i32.const 0 - i32.store offset=4 + 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.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34368 + i32.const 0 + i32.store + i32.const 35936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=4 i32.const 0 local.set $1 loop $for-loop|1 @@ -867,1052 +1530,210 @@ i32.const 34368 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34360 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34360 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34360 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 else + local.get $0 + i32.const 1572 + i32.add local.get $1 - i32.const 536870910 - i32.lt_u + i32.gt_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 + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 - i32.const 16 - i32.lt_u local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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.wrap_i64 + i32.const -16 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 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $class-implements/I2#get:foo@override (param $0 i32) (result i32) - block $case5 - block $case4 - block $case3 - block $case2 - block $case1 - block $case0 - block $tablify|0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 14 - i32.sub - br_table $case4 $tablify|0 $case0 $case1 $case5 $case2 $case3 $tablify|0 - end - unreachable - end - local.get $0 - i32.load - return - end - local.get $0 - i32.load - return - end - local.get $0 - call $class-implements/B3#get:foo - return - end - local.get $0 - call $class-implements/B3#get:foo - return - end - local.get $0 - i32.load - return - end - local.get $0 - call $class-implements/B2#get:foo - ) - (func $class-implements/I2#set:foo@override (param $0 i32) (param $1 i32) - block $folding-inner0 - block $case5 - block $case3 - block $case2 - block $tablify|0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 14 - i32.sub - br_table $folding-inner0 $tablify|0 $folding-inner0 $folding-inner0 $case5 $case2 $case3 $tablify|0 - end - unreachable - end - local.get $0 - local.get $1 - call $class-implements/B3#set:foo - return - end - local.get $0 - local.get $1 - call $class-implements/B3#set:foo - return - 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 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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.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 - return - end - local.get $0 local.get $1 - i32.store - ) - (func $class-implements/B2#get:foo@override (param $0 i32) (result i32) - (local $1 i32) - block $default - block $case1 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $1 - i32.const 19 - i32.ne - if - local.get $1 - i32.const 20 - i32.eq - br_if $case1 - br $default - end - local.get $0 - call $class-implements/B3#get:foo - return - end - local.get $0 - call $class-implements/B3#get:foo - return - end - local.get $0 - call $class-implements/B2#get:foo - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-implements/B4 - block $class-implements/B3 - block $class-implements/B2 - block $class-implements/A4 - block $class-implements/A3 - block $class-implements/I2 - block $class-implements/A2 - block $class-implements/K - block $class-implements/G - block $class-implements/F - block $class-implements/E - block $class-implements/J - block $class-implements/D - block $class-implements/B - block $class-implements/C - block $class-implements/I - block $class-implements/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if return end - unreachable - ) - (func $~start - call $start:class-implements - ) - (func $class-implements/D#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + 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 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $class-implements/F#constructor (result i32) + (func $~lib/rt/itcms/visitRoots (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 1592 - i32.lt_s + (local $1 i32) + global.get $class-implements/a + local.tee $0 if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 11 - call $~lib/rt/itcms/__new + global.get $class-implements/c local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-implements/D#constructor + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/d local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $class-implements/A2#constructor (param $0 i32) (result 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 1592 - i32.lt_s if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz + global.get $class-implements/e + local.tee $0 if - 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 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor + global.get $class-implements/f local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/g + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/h + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) - (func $class-implements/B2#constructor (param $0 i32) (result i32) + (func $class-implements/B3#set:foo (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1927,37 +1748,47 @@ unreachable end 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 4 - i32.const 18 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/object/Object#constructor - local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.const 3 - i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + ) + (func $class-implements/B2#get:foo@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case1 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $1 + i32.const 19 + i32.ne + if + local.get $1 + i32.const 20 + i32.eq + br_if $case1 + br $default + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end local.get $0 + call $class-implements/B2#get:foo ) (func $class-implements/B2#get:foo (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -1988,34 +1819,268 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $class-implements/B3#get:foo (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 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + (func $~start + call $start:class-implements + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34360 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34360 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34360 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - 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 $start:class-implements (local $0 i32) @@ -2167,22 +2232,19 @@ i32.const 0 call $class-implements/D#constructor global.set $class-implements/d - block $__inlined_func$class-implements/D#foo@override$163 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-implements/d - local.tee $0 - i32.store - i32.const 4 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 11 - i32.eq - br_if $__inlined_func$class-implements/D#foo@override$163 - drop - i32.const 3 - end + global.get $~lib/memory/__stack_pointer + global.get $class-implements/d + local.tee $0 + i32.store + i32.const 4 + i32.const 3 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 11 + i32.eq + select i32.const 3 i32.ne if @@ -2224,22 +2286,19 @@ global.set $~lib/memory/__stack_pointer local.get $0 global.set $class-implements/e - block $__inlined_func$class-implements/D#foo@override$165 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-implements/e - local.tee $0 - i32.store - i32.const 4 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 11 - i32.eq - br_if $__inlined_func$class-implements/D#foo@override$165 - drop - i32.const 3 - end + global.get $~lib/memory/__stack_pointer + global.get $class-implements/e + local.tee $0 + i32.store + i32.const 4 + i32.const 3 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 11 + i32.eq + select i32.const 3 i32.ne if @@ -2257,22 +2316,19 @@ i32.store call $class-implements/F#constructor global.set $class-implements/g - block $__inlined_func$class-implements/D#foo@override$166 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-implements/g - local.tee $0 - i32.store - i32.const 4 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 11 - i32.eq - br_if $__inlined_func$class-implements/D#foo@override$166 - drop - i32.const 3 - end + global.get $~lib/memory/__stack_pointer + global.get $class-implements/g + local.tee $0 + i32.store + i32.const 4 + i32.const 3 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 11 + i32.eq + select i32.const 4 i32.ne if @@ -2285,11 +2341,11 @@ end call $class-implements/F#constructor global.set $class-implements/h + global.get $~lib/memory/__stack_pointer + global.get $class-implements/h + local.tee $0 + i32.store block $__inlined_func$class-implements/I#foo@override$167 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-implements/h - local.tee $0 - i32.store block $case3 block $case2 block $case1 @@ -2326,39 +2382,39 @@ 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 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $__inlined_func$class-implements/J#foo@override$169 (result 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 1592 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store block $case315 block $case216 block $case117 @@ -2965,69 +3021,4 @@ call $~lib/builtins/abort unreachable ) - (func $class-implements/B3#set:foo (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 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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.store - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/object/Object#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 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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 0 - i32.const 0 - 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 - ) ) diff --git a/tests/compiler/class-overloading-cast.release.wat b/tests/compiler/class-overloading-cast.release.wat index 240da0e02d..a06c23f70d 100644 --- a/tests/compiler/class-overloading-cast.release.wat +++ b/tests/compiler/class-overloading-cast.release.wat @@ -1,12 +1,12 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -48,429 +48,173 @@ (data $13 (i32.const 1648) "\0e\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)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) - global.get $class-overloading-cast/v - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading-cast/v2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading-cast/v3 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading-cast/c - local.tee $0 + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 20 + 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 - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/threshold end end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - return + call $~lib/rt/tlsf/initialize end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.eqz if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + 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 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$141 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34476 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$141 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 + local.get $3 local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1648 - i32.load - i32.gt_u + 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 - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 2 - i32.shl - i32.const 1652 - i32.add - i32.load - i32.const 32 - i32.and end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select local.get $2 - 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 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 i32.const -4 i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 + i32.const 28 i32.lt_u - i32.and - i32.eqz if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/tlsf/removeBlock local.get $1 i32.load local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load i32.const -4 i32.and - i32.add + i32.const 28 + i32.sub local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 + i32.const 2 i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 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 $1 + local.get $3 + i32.const -2 + i32.and i32.store local.get $1 i32.const 4 @@ -480,640 +224,854 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 + local.tee $2 + local.get $2 i32.load - local.tee $6 - i32.const 1 + i32.const -3 i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 i32.store end - local.get $4 - local.get $2 - i32.const 2 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.store offset=4 local.get $1 - i32.const 4 - i32.add local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub + i32.store offset=8 + local.get $2 local.get $1 - i32.store local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u + i32.load offset=4 + i32.const 3 i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 + i32.or i32.store offset=4 + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and i32.const 4 - i32.shl - local.get $2 i32.add - i32.const 2 - i32.shl i32.add + global.set $~lib/rt/itcms/total local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/white local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 + global.get $~lib/rt/itcms/iter i32.eq if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34480 - i32.const 0 - i32.store - i32.const 36048 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34480 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + block $__inlined_func$~lib/rt/itcms/Object#unlink$141 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if local.get $1 - i32.const 16 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34476 i32.lt_u + i32.and + i32.eqz if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34480 - i32.add i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$141 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 + else + local.get $0 + i32.const 1648 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1652 i32.add - local.set $0 - br $for-loop|0 + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 34480 - i32.const 36052 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34480 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + if + i32.const 34496 + i32.const 34544 + 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 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq if - local.get $0 - global.set $~lib/rt/itcms/iter + local.get $2 + i32.const 8 + i32.add + local.set $2 local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34476 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and + end + block $__inlined_func$~lib/util/string/compareImpl$87 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + br_if $__inlined_func$~lib/util/string/compareImpl$87 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount - return + i32.const 0 + local.set $3 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/object/Object#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 1708 + i32.lt_s + if + i32.const 34496 + i32.const 34544 + 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 0 + 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 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - i32.const 34476 - i32.lt_u + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz 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.const -2 + local.get $2 + i32.rotl i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34476 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $class-overloading-cast/D + block $class-overloading-cast/A<~lib/string/String> + block $class-overloading-cast/C + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $"class-overloading-cast/B" + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + return end + return end - i32.const 10 return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1141,12 +1099,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1157,9 +1115,9 @@ unreachable end local.get $0 - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1172,299 +1130,268 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.tee $2 - call $~lib/rt/tlsf/searchBlock + memory.size local.tee $1 - i32.eqz - if - i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - local.get $3 - i32.gt_s - select + i32.sub memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34480 + i32.const 0 + i32.store + i32.const 36048 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34480 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34480 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end + i32.const 34480 + i32.const 36052 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34480 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load - local.tee $3 - i32.const -4 + i32.const 19 + i32.add + i32.const -16 i32.and - i32.const 28 + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $1 local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - 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 + i32.add local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const -2 - i32.and - i32.store local.get $1 - i32.const 4 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $0 local.get $1 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total local.get $1 - i32.load - i32.const -4 - i32.and i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $class-overloading-cast/D - block $class-overloading-cast/A<~lib/string/String> - block $class-overloading-cast/C - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $"class-overloading-cast/B" - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $class-overloading-cast/v + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end - unreachable - ) - (func $~start - global.get $~started + global.get $class-overloading-cast/c + local.tee $0 if - return + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end end - i32.const 1 - global.set $~started - call $start:class-overloading-cast ) (func $class-overloading-cast/A#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -1508,166 +1435,273 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1708 - i32.lt_s - if - i32.const 34496 - i32.const 34544 - 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 - local.get $1 - i32.eq + (func $~start + global.get $~started if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 return end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + i32.const 1 + global.set $~started + call $start:class-overloading-cast + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34476 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$87 - loop $while-continue|1 + local.get $0 + i32.const 34476 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34476 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$87 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:class-overloading-cast @@ -1839,11 +1873,11 @@ local.get $0 global.set $class-overloading-cast/v3 global.get $~lib/memory/__stack_pointer + global.get $class-overloading-cast/v + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer block $__inlined_func$class-overloading-cast/A#foo@override$136 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-overloading-cast/v - local.tee $0 - i32.store offset=4 block $default block $case1 local.get $0 @@ -1901,22 +1935,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $__inlined_func$class-overloading-cast/A#foo@override$137 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-overloading-cast/v3 - local.tee $0 - i32.store offset=4 - i32.const 1488 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 7 - i32.eq - br_if $__inlined_func$class-overloading-cast/A#foo@override$137 - drop - i32.const 1456 - end + global.get $class-overloading-cast/v3 + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.const 1456 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 7 + i32.eq + select local.tee $0 i32.store local.get $0 @@ -2158,38 +2189,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#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 1708 - i32.lt_s - if - i32.const 34496 - i32.const 34544 - 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 0 - 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 - ) ) diff --git a/tests/compiler/class-overloading.release.wat b/tests/compiler/class-overloading.release.wat index 722d82f3b5..678fb5f27f 100644 --- a/tests/compiler/class-overloading.release.wat +++ b/tests/compiler/class-overloading.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32))) + (type $1 (func (param i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $class-overloading/which (mut i32) (i32.const 1056)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -58,441 +58,335 @@ (data $17 (i32.const 1792) "\12\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)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $class-overloading/which - local.tee $0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $class-overloading/a - local.tee $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - global.get $class-overloading/c - local.tee $0 - if + block $folding-inner0 + local.get $1 + i32.eqz local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading/ia - local.tee $0 - if + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading/ic - local.tee $0 - if + i32.store local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading/b2 - local.tee $0 - if + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq + i32.eqz if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$171 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz + loop $do-loop|0 + local.get $2 + i64.load local.get $1 - i32.const 34636 - i32.lt_u - i32.and - i32.eqz + i64.load + i64.eq if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$171 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable end - 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 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1792 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/util/string/compareImpl$95 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$95 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end - local.get $0 - i32.const 2 + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (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$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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.const 1796 i32.add - i32.load - i32.const 32 - i32.and + global.set $~lib/rt/itcms/threshold end - local.set $3 + 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 local.get $2 - i32.load offset=8 - local.set $0 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + 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 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 local.get $3 + i32.gt_s select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end local.get $2 - 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 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.load - local.tee $3 - i32.const 1 + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1424 - i32.const 268 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 i32.const -4 i32.and - local.tee $3 - i32.const 12 - i32.lt_u + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u if - i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u - select + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 local.get $4 i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else local.get $1 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 + i32.const -2 i32.and - i32.add - local.tee $3 i32.store local.get $1 i32.const 4 @@ -502,640 +396,807 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 + local.tee $2 + local.get $2 i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 + i32.const -3 i32.and - i32.add - local.tee $3 i32.store end - local.get $4 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 local.get $2 - i32.const 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 - local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 i32.const 4 i32.add - local.get $2 i32.add - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub + global.set $~lib/rt/itcms/total local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1424 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/white local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 - i32.const 4 - i32.add local.get $1 - i32.gt_u + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter end - local.get $3 + block $__inlined_func$~lib/rt/itcms/Object#unlink$171 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34636 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$171 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1792 i32.load - local.set $4 - local.get $5 - local.set $1 + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and end - else - local.get $0 - i32.const 1572 - i32.add + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + 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 0 + 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 + ) + (func $class-overloading/A#a@override (param $0 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case0 $case1 $case0 $case0 $case2 $default + end + i32.const 1520 + global.set $class-overloading/which + return + end + local.get $0 + 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 $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - local.get $4 - i32.const 2 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 8 - i32.sub + i32.const -4 + i32.and local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 34640 - i32.const 0 - i32.store - i32.const 36208 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34640 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34640 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 34640 - i32.const 36212 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34640 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34636 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-overloading/A1 + block $class-overloading/B1 + block $class-overloading/B2 + block $class-overloading/A2 + block $class-overloading/CC + block $class-overloading/IC + block $class-overloading/CA + block $class-overloading/IA + block $class-overloading/F + block $class-overloading/E + block $class-overloading/D + block $class-overloading/C + block $class-overloading/B + block $class-overloading/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 + return end + return end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + return end - global.get $~lib/rt/itcms/visitCount return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + return + end + unreachable + ) + (func $class-overloading/B#constructor (param $0 i32) (result 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 1868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34636 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34636 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner0 + 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 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 0 + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1163,12 +1224,12 @@ local.get $0 local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1179,9 +1240,9 @@ unreachable end local.get $0 - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1194,706 +1255,679 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 + unreachable + end + i32.const 34640 + i32.const 0 + i32.store + i32.const 36208 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34640 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 local.set $1 - loop $do-loop|0 + loop $for-loop|1 local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz + i32.const 16 + i32.lt_u if - global.get $~lib/rt/itcms/total - i32.const 1 + local.get $0 + i32.const 4 i32.shl - i32.const 1024 + local.get $1 i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2 + i32.shl + i32.const 34640 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $0 + i32.const 1 i32.add - global.set $~lib/rt/itcms/threshold + local.set $0 + br $for-loop|0 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.const 34640 + i32.const 36212 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34640 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if + local.get $3 i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 i32.const 16 - i32.shl - i32.const 4 i32.sub - i32.ne - i32.shl - i32.const 65563 + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 local.get $1 - local.get $3 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $class-overloading/which + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ia + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ic + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/b2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s + i32.ne if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort unreachable end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + ) + (func $class-overloading/E#constructor (param $0 i32) (result 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 1868 + i32.lt_s if - i32.const 0 - i32.const 1424 - i32.const 501 - i32.const 14 + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - 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 $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 i32.store end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/D#constructor local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-overloading/D#constructor (param $0 i32) (result 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 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + 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.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add + call $class-overloading/B#constructor local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-overloading/C#a (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 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 0 - memory.fill + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + i32.const 1520 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store + i32.const 1520 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 1616 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $class-overloading/A#a@override (param $0 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 5 - i32.sub - br_table $case0 $case1 $case0 $case0 $case2 $default - end - i32.const 1520 - global.set $class-overloading/which - return - end - local.get $0 - call $class-overloading/C#a - return - end - i32.const 1648 - global.set $class-overloading/which + (func $~start + global.get $~started + if return end - i32.const 1488 - global.set $class-overloading/which + i32.const 1 + global.set $~started + call $start:class-overloading ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-overloading/A1 - block $class-overloading/B1 - block $class-overloading/B2 - block $class-overloading/A2 - block $class-overloading/CC - block $class-overloading/IC - block $class-overloading/CA - block $class-overloading/IA - block $class-overloading/F - block $class-overloading/E - block $class-overloading/D - block $class-overloading/C - block $class-overloading/B - block $class-overloading/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount return end - return + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - return end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34636 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount return end - return - end - unreachable - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:class-overloading - ) - (func $class-overloading/B#constructor (param $0 i32) (result 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 1868 - i32.lt_s - br_if $folding-inner0 - 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 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1868 - i32.lt_s - br_if $folding-inner0 - 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 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor + global.get $~lib/rt/itcms/iter local.tee $0 - i32.store - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34656 - i32.const 34704 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1868 - i32.lt_s - if - i32.const 34656 - i32.const 34704 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + global.get $~lib/rt/itcms/toSpace i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$95 - loop $while-continue|1 + local.get $0 + i32.const 34636 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34636 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$95 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $class-overloading/C#a (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 1868 - i32.lt_s - if - i32.const 34656 - i32.const 34704 - 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.store - i32.const 1520 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store - i32.const 1520 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 1616 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $class-overloading/D#constructor (param $0 i32) (result 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 1868 - i32.lt_s - if - i32.const 34656 - i32.const 34704 - 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.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $class-overloading/E#constructor (param $0 i32) (result 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 1868 - i32.lt_s - if - i32.const 34656 - i32.const 34704 - 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.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-overloading/D#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) (func $start:class-overloading (local $0 i32) @@ -3128,6 +3162,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + if + i32.const 0 + i32.const 1552 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3141,38 +3184,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#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 1868 - i32.lt_s - if - i32.const 34656 - i32.const 34704 - 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 0 - 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 - ) ) diff --git a/tests/compiler/class-override.release.wat b/tests/compiler/class-override.release.wat index 587daa5dde..470d06af94 100644 --- a/tests/compiler/class-override.release.wat +++ b/tests/compiler/class-override.release.wat @@ -1,12 +1,12 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32) (result i32))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -37,57 +37,6 @@ (export "fn" (func $class-override/fn)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $class-override/x - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -240,122 +189,352 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 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 $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + local.get $1 + i32.load + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.load offset=8 - local.set $5 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load offset=4 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq + i32.const 16 + i32.ge_u if local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + 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 $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 local.get $2 i32.const 2 @@ -632,26 +811,200 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-override/B + block $class-override/C + block $class-override/D + block $class-override/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and i32.const 4 i32.sub @@ -746,670 +1099,168 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $class-override/x + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34320 - i32.const 0 - i32.store - i32.const 35888 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34320 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34320 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34320 - i32.const 35892 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34320 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34308 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34308 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34308 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 $3 - i32.gt_s - select - memory.grow - i32.const 0 + ) + (func $class-override/fn (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1540 i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - 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 $1 - local.get $3 - i32.const -2 - i32.and i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and + global.get $~lib/memory/__stack_pointer + global.get $class-override/x + local.tee $1 i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-override/B - block $class-override/C - block $class-override/D - block $class-override/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid - end - return - end - return - end - return - end - local.get $0 + block $__inlined_func$class-override/A#f@override$126 + block $default + block $case1 + block $case0 + local.get $1 + i32.const 8 + i32.sub i32.load - call $~lib/rt/itcms/__visit - return + i32.const 5 + i32.sub + br_table $case1 $case1 $case0 $default end - return + local.get $1 + local.get $0 + call $class-override/B#f + local.set $0 + br $__inlined_func$class-override/A#f@override$126 end - return + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $class-override/B#f + i32.const 100 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$class-override/A#f@override$126 end - return + local.get $0 + i32.const 1 + i32.add + local.set $0 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 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) + (func $class-override/B#f (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 1540 + i32.lt_s + if + i32.const 34336 + i32.const 34384 + 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.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 11 + i32.add + ) (func $~start (local $0 i32) (local $1 i32) @@ -1562,167 +1413,316 @@ 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 8 - i32.add - global.set $~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 - local.get $0 - i32.store - 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 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 + local.get $0 + i32.store + 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 8 + i32.add + global.set $~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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-override/x + i32.const 0 + call $class-override/fn + i32.const 111 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$start:class-override + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34308 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - global.set $class-override/x - i32.const 0 - call $class-override/fn - i32.const 111 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and i32.ne if i32.const 0 - i32.const 1456 - i32.const 24 - i32.const 1 + i32.const 1120 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - br $__inlined_func$start:class-override - end - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $class-override/fn (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $class-override/x - local.tee $1 - i32.store - block $__inlined_func$class-override/A#f@override$126 - block $default - block $case1 - block $case0 - local.get $1 - i32.const 8 - i32.sub - i32.load - i32.const 5 - i32.sub - br_table $case1 $case1 $case0 $default - end - local.get $1 - local.get $0 - call $class-override/B#f - local.set $0 - br $__inlined_func$class-override/A#f@override$126 - 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 1540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 34308 + i32.lt_u + if + local.get $0 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 + i32.store offset=4 local.get $0 - call $class-override/B#f - i32.const 100 + 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 - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$class-override/A#f@override$126 + local.tee $0 + i32.const 34308 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end - local.get $0 - i32.const 1 - i32.add - local.set $0 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $class-override/B#f (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 1540 - i32.lt_s - if - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - 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 - local.get $1 - i32.const 11 - i32.add ) ) diff --git a/tests/compiler/class-static-function.release.wat b/tests/compiler/class-static-function.release.wat index 10a8811e24..d52e31d386 100644 --- a/tests/compiler/class-static-function.release.wat +++ b/tests/compiler/class-static-function.release.wat @@ -13,9 +13,6 @@ (elem $0 (i32.const 1) $class-static-function/Example.staticFunc) (export "memory" (memory $0)) (start $~start) - (func $class-static-function/Example.staticFunc (result i32) - i32.const 42 - ) (func $~start global.get $~lib/memory/__stack_pointer i32.const 4 @@ -42,9 +39,21 @@ i32.load call_indirect (type $0) drop + i32.const 0 + 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 4 i32.add global.set $~lib/memory/__stack_pointer ) + (func $class-static-function/Example.staticFunc (result i32) + i32.const 42 + ) ) diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index e983247165..7a93b429d2 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -39,185 +39,6 @@ (export "memory" (memory $0)) (export "test" (func $export:class/test)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$139 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34336 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$139 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1536 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -242,330 +63,387 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1056 i32.const 1392 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 local.get $3 + local.get $2 + local.get $3 + 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 - local.tee $2 - i32.const 12 - i32.lt_u + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -573,520 +451,575 @@ if i32.const 0 i32.const 1392 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 + local.get $2 i32.const 4 i32.shl - local.get $2 + local.get $3 i32.add i32.const 2 i32.shl i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 i32.load + local.tee $3 i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 382 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 + i32.const 4 i32.add - i32.const -16 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $4 local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 + i32.const 4 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or + local.get $1 i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $3 i32.store offset=8 - local.get $1 - i32.const 4 - i32.add local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 i32.add - local.tee $3 i32.const 2 - i32.store + i32.shl + i32.add + local.get $1 + i32.store offset=96 local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - i32.const 34336 - i32.const 0 - i32.store - i32.const 35904 - i32.const 0 - i32.store - loop $for-loop|0 + block $__inlined_func$~lib/rt/itcms/Object#unlink$139 local.get $0 - i32.const 23 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.const 2 - i32.shl + i32.load offset=8 + i32.eqz + local.get $0 i32.const 34336 - i32.add - i32.const 0 - i32.store offset=4 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$139 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $class/GenericInitializer + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid + end + return + end + return + end + return + end local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34336 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.load + call $~lib/rt/itcms/__visit + return end + return end local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + 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 1568 + i32.lt_s + if + i32.const 34368 + i32.const 34416 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + 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.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 34336 - i32.const 35908 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34336 - global.set $~lib/rt/tlsf/ROOT + unreachable ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/array/Array#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 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34336 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + 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 - local.tee $1 - i32.const -4 + i32.const 3 i32.and - global.set $~lib/rt/itcms/iter + local.tee $0 global.get $~lib/rt/itcms/white i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34336 - i32.lt_u + i32.eq if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 + local.get $1 + call $~lib/rt/itcms/Object#makeGray else - global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq local.get $0 - i32.load - i32.const -4 + i32.const 3 + i32.eq i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34336 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/itcms/Object#makeGray end end - i32.const 10 - return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1216,374 +1149,627 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end if - i32.const 1056 - i32.const 1120 - i32.const 261 - 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$71 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if - global.get $~lib/rt/itcms/total - i32.const 1 + local.get $0 + i32.const 4 i32.shl - i32.const 1024 + local.get $1 i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $0 + i32.const 1 i32.add - global.set $~lib/rt/itcms/threshold + local.set $0 + br $for-loop|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.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 1056 + i32.const 0 i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + local.get $3 i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s + local.get $1 + i32.gt_u if - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $2 + local.get $3 + local.get $1 i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 499 - i32.const 16 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $5 local.get $2 - i32.load - i32.const -4 + i32.wrap_i64 + i32.const -16 i32.and - i32.gt_u + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end + local.get $1 local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const 2 i32.and - local.get $5 + local.get $3 + i32.const 8 i32.sub local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white + i32.const 1 i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + local.get $3 + i32.store offset=1568 local.get $0 local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34336 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 i32.store - local.get $1 - if + 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 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34336 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34336 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34336 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + br_if $folding-inner0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load16_s offset=4 + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_s offset=6 + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store16 offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 295 - 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 - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + i32.store8 offset=6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.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 + local.get $0 + return end + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $class/testGenericInitializer (local $0 i32) @@ -1744,190 +1930,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $class/GenericInitializer - block $class/Animal - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - 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 1568 - i32.lt_s - if - i32.const 34368 - i32.const 34416 - 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.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34336 - 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 - ) - (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1568 - i32.lt_s - br_if $folding-inner0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 1568 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - drop - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load16_s offset=4 - drop - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load8_s offset=6 - drop - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store16 offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store8 offset=6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.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 - local.get $0 - return - end - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/const-folding.release.wat b/tests/compiler/const-folding.release.wat index bdd34a3c6c..2056595ad5 100644 --- a/tests/compiler/const-folding.release.wat +++ b/tests/compiler/const-folding.release.wat @@ -1,12 +1,16 @@ (module - (type $0 (func (param i64) (result i64))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i64) (result i64))) (global $const-folding/x (mut i32) (i32.const 0)) (memory $0 0) (export "x" (global $const-folding/x)) (export "test" (func $const-folding/test)) (export "memory" (memory $0)) (start $~start) + (func $~start + i32.const 30 + global.set $const-folding/x + ) (func $const-folding/test (param $0 i64) (result i64) local.get $0 i64.const 1 @@ -16,8 +20,4 @@ i64.shr_u i64.add ) - (func $~start - i32.const 30 - global.set $const-folding/x - ) ) diff --git a/tests/compiler/constructor.release.wat b/tests/compiler/constructor.release.wat index eb94f0830f..0299cca344 100644 --- a/tests/compiler/constructor.release.wat +++ b/tests/compiler/constructor.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i64))) (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)) @@ -44,105 +44,6 @@ (data $9 (i32.const 1488) "\10\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $constructor/emptyCtor - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/emptyCtorWithFieldInit - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/emptyCtorWithFieldNoInit - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/emptyCtorWithFieldAccess - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/none - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/justFieldInit - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/justFieldNoInit - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/ctorConditionallyReturnsThis - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/ctorFieldInitOrder - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -295,330 +196,422 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + local.get $4 + local.get $2 + i32.const 12 + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 if local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 local.get $1 - i32.const 4 - i32.add + i32.store offset=12 local.get $2 - i32.add - i32.ne + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/object/Object#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 + if + i32.const 34352 + i32.const 34400 + 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 0 + i32.const 0 + 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 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 234 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -626,197 +619,529 @@ if i32.const 0 i32.const 1392 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 + (local $6 i32) local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz if i32.const 0 i32.const 1392 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 + i32.load local.tee $3 + i32.const 1 + i32.and + i32.eqz if - local.get $3 - i32.const 4 - i32.add + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.const 4 i32.add local.get $1 - i32.gt_u + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $4 local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 + i32.const 4 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or + local.get $1 i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $3 i32.store offset=8 - local.get $1 - i32.const 4 - i32.add local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 i32.add - local.tee $3 i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - local.get $3 - i32.store offset=1568 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $constructor/CtorFieldInitOrder + block $constructor/CtorFieldInitWithoutConstructor + block $constructor/CtorConditionallyReturnsThis + block $constructor/CtorConditionallyReturns + block $constructor/CtorReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldAccess + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 end if unreachable @@ -881,768 +1206,277 @@ i32.const 34336 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34324 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34324 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34324 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 334 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.const 19 + i32.add + i32.const -16 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + i32.load offset=1568 + local.tee $3 if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + local.get $3 i32.const 4 - i32.sub - i32.ne - i32.shl i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s + local.get $1 + i32.gt_u if - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $2 + local.get $3 + local.get $1 i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 499 - i32.const 16 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $5 local.get $2 - i32.load - i32.const -4 + i32.wrap_i64 + i32.const -16 i32.and - i32.gt_u + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end + local.get $1 local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $constructor/emptyCtor + local.tee $0 if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - local.get $6 + global.get $constructor/emptyCtorWithFieldInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldAccess + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/none + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturnsThis + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorFieldInitOrder + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 i32.const -4 i32.and - local.get $5 + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $constructor/CtorFieldInitWithoutConstructor#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + i32.const 34352 + i32.const 34400 i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 + 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 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or + local.get $0 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 + local.get $0 + 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 $2 - i32.const 20 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.tee $1 - i32.const 0 + global.set $~lib/memory/__stack_pointer local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $constructor/CtorFieldInitOrder - block $constructor/CtorFieldInitWithoutConstructor - block $constructor/CtorConditionallyReturnsThis - block $constructor/CtorConditionallyReturns - block $constructor/CtorReturns - block $constructor/JustFieldNoInit - block $constructor/JustFieldInit - block $constructor/None - block $constructor/EmptyCtorWithFieldAccess - block $constructor/EmptyCtorWithFieldNoInit - block $constructor/EmptyCtorWithFieldInit - block $constructor/EmptyCtor - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable ) (func $~start (local $0 i32) @@ -2122,127 +1956,293 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $constructor/ctorFieldInitOrder + global.get $~lib/memory/__stack_pointer + global.get $constructor/ctorFieldInitOrder + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 112 + 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 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 3 + global.get $~lib/rt/itcms/toSpace i32.ne if - i32.const 0 - i32.const 1456 - i32.const 112 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34324 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34324 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $constructor/CtorFieldInitWithoutConstructor#constructor (result i32) - (local $0 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 1556 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 8 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/object/Object#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 - if - i32.const 34352 - i32.const 34400 - 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 0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/declare.release.wat b/tests/compiler/declare.release.wat index 93d8dcee02..795c5041aa 100644 --- a/tests/compiler/declare.release.wat +++ b/tests/compiler/declare.release.wat @@ -3,9 +3,9 @@ (type $1 (func (param i32 i32 i32 i32))) (import "declare" "externalConstant" (global $declare/externalConstant i32)) (import "declare" "my.externalConstant" (global $declare/my.externalConstant i32)) - (import "declare" "externalFunction" (func $declare/externalFunction)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) + (import "declare" "externalFunction" (func $declare/externalFunction)) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") diff --git a/tests/compiler/do.release.wat b/tests/compiler/do.release.wat index 2d8afef373..09a5e6e6a9 100644 --- a/tests/compiler/do.release.wat +++ b/tests/compiler/do.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -34,132 +34,347 @@ (data $9 (i32.const 1472) "\05\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/visitRoots + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$125 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34264 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1152 - i32.const 132 - i32.const 16 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 + i32.const 34264 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34264 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34264 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 @@ -231,6 +446,70 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $do/Ref#constructor (result i32) + (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 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1496 + 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 0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -623,119 +902,90 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $do/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid + end + return + end + return + end + return + end + local.get $0 i32.load - local.set $4 - local.get $5 - local.set $1 + call $~lib/rt/itcms/__visit + return end - else + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -817,320 +1067,162 @@ i32.const 34272 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34264 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34264 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34264 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 + i32.const 1152 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1364,6 +1456,9 @@ memory.fill local.get $0 ) + (func $~start + call $start:do + ) (func $start:do (local $0 i32) (local $1 i32) @@ -1510,11 +1605,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 br_if $do-loop|02 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1532,11 +1626,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 br_if $do-loop|03 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1554,14 +1647,13 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 i32.const 0 local.get $0 select br_if $do-loop|09 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1812,99 +1904,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $do/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - call $start:do - ) - (func $do/Ref#constructor (result i32) - (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 1496 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1496 - 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 0 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34288 - i32.const 34336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/duplicate-fields.release.wat b/tests/compiler/duplicate-fields.release.wat index 8091252b0e..93f8386acc 100644 --- a/tests/compiler/duplicate-fields.release.wat +++ b/tests/compiler/duplicate-fields.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -36,194 +36,319 @@ (data $9 (i32.const 1504) "\0b\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $duplicate-fields/foo - local.tee $0 + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - global.get $duplicate-fields/raz - local.tee $0 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 20 + 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 - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/threshold end end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$139 - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34320 + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 i32.lt_u - i32.and - i32.eqz + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$139 end - local.get $0 - i32.load offset=8 + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if i32.const 0 - i32.const 1120 - i32.const 132 + i32.const 1392 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - 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 + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 i32.and i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - local.get $1 - i32.const 1504 + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1508 + i32.const -4 + i32.and i32.add + local.tee $3 + local.get $3 i32.load - i32.const 32 + i32.const -3 i32.and + i32.store end - local.set $3 local.get $2 - i32.load offset=8 - local.set $1 + local.get $1 + i32.store offset=12 + local.get $2 local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 + local.get $3 + local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $2 - local.get $0 i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -249,6 +374,61 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $duplicate-fields/A2#set:bar (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 1120 + i32.const 295 + 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 + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -641,461 +821,184 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 + i32.const 1120 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$139 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34320 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$139 end - else local.get $0 - i32.const 1572 - i32.add + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else local.get $1 + i32.const 1504 + i32.load i32.gt_u if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 2 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - 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 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + 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/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34320 - i32.const 0 - i32.store - i32.const 35888 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34320 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $duplicate-fields/A3 + block $duplicate-fields/B3 + block $duplicate-fields/B2 + block $duplicate-fields/Foo + block $duplicate-fields/B + block $duplicate-fields/A + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $duplicate-fields/A $duplicate-fields/B $folding-inner0 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34320 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.load + call $~lib/rt/itcms/__visit + br $folding-inner0 end + return end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + return end + unreachable end - i32.const 34320 - i32.const 35892 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34320 - global.set $~lib/rt/tlsf/ROOT + local.get $0 + i32.load + call $~lib/rt/itcms/__visit ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34320 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34320 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34320 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 256 @@ -1223,428 +1126,265 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end if - i32.const 1056 - i32.const 1120 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if - global.get $~lib/rt/itcms/total - i32.const 1 + local.get $0 + i32.const 4 i32.shl - i32.const 1024 + local.get $1 i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $0 + i32.const 1 i32.add - global.set $~lib/rt/itcms/threshold + local.set $0 + br $for-loop|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.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 1056 + i32.const 0 i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + local.get $3 i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - memory.fill - local.get $1 - ) - (func $duplicate-fields/A2#set:bar (param $0 i32) (param $1 i32) + local.get $3 + i32.store offset=1568 local.get $0 local.get $1 - i32.store - local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $duplicate-fields/foo + local.tee $0 if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/__visit + end + global.get $duplicate-fields/raz + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.ne 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 + i32.const 3 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $duplicate-fields/A3 - block $duplicate-fields/B3 - block $duplicate-fields/B2 - block $duplicate-fields/Foo - block $duplicate-fields/B - block $duplicate-fields/A - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $duplicate-fields/A $duplicate-fields/B $folding-inner0 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid - end - return - end - return - end - return - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - br $folding-inner0 - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - (local $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 + (func $~start + (local $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 block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1552 @@ -2049,4 +1789,264 @@ call $~lib/builtins/abort unreachable ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34320 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34320 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34320 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) ) diff --git a/tests/compiler/empty-exportruntime.release.wat b/tests/compiler/empty-exportruntime.release.wat index 9e2243adaf..422cd0bc5a 100644 --- a/tests/compiler/empty-exportruntime.release.wat +++ b/tests/compiler/empty-exportruntime.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) (type $7 (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)) @@ -42,190 +42,6 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1520 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34356 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - ) - (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 - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/toSpace - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 1568 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - i32.const 1572 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $1 - 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 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -250,163 +66,423 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 34356 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + local.tee $1 + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34356 + 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 -2 - local.get $2 - i32.rotl + i32.const -4 i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34356 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -642,119 +718,209 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34356 + i32.lt_u + i32.and + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 + i32.const 1120 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $3 - local.get $1 + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + call $~lib/builtins/abort + unreachable + end + 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 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return end - else local.get $0 - i32.const 1572 - i32.add + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.gt_u + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -836,393 +1002,396 @@ i32.const 34368 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - i32.const 34356 - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34356 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34356 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34356 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - i32.const 10 - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u + (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 + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 4 - i32.shr_u - local.set $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 else - local.get $1 - i32.const 536870910 - i32.lt_u + local.get $2 + i32.const 1568 + i32.load + i32.gt_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 + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 2 + i32.shl + i32.const 1572 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 local.get $1 - i32.const 16 - i32.lt_u + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 local.get $2 - i32.const 23 - i32.lt_u + 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 + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34356 + 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 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add + i32.const 20 + i32.sub + local.tee $1 i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl + i32.const 3 i32.and - local.tee $1 - if (result i32) + i32.const 3 + i32.ne + if + i32.const 1520 + i32.const 1120 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (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 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1456 + i32.const 1120 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + 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 + i32.or + i32.store offset=4 local.get $1 - i32.ctz local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 + i32.store offset=8 local.get $2 - i32.const 1 - i32.add - i32.shl + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 end + local.get $0 ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1538,116 +1707,6 @@ 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 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 1456 - i32.const 1120 - i32.const 338 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - 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 - 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 - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 1520 - i32.const 1120 - i32.const 352 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) (func $~lib/rt/itcms/__collect global.get $~lib/rt/itcms/state i32.const 0 @@ -1683,63 +1742,4 @@ i32.add global.set $~lib/rt/itcms/threshold ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34356 - 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 - ) ) diff --git a/tests/compiler/empty-new.release.wat b/tests/compiler/empty-new.release.wat index 3877702b8f..f4381da8f1 100644 --- a/tests/compiler/empty-new.release.wat +++ b/tests/compiler/empty-new.release.wat @@ -3,9 +3,9 @@ (type $1 (func (param i32))) (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param i32 i32 i64))) - (type $5 (func (result i32))) - (type $6 (func (param i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -31,51 +31,6 @@ (data $8 (i32.const 1440) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -620,6 +575,168 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -734,85 +851,85 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34240 - i32.const 35812 + ) + (func $~start memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34240 - global.set $~lib/rt/tlsf/ROOT + i32.const 16 + i32.shl + i32.const 34228 + 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 $~lib/rt/itcms/__new ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1074,63 +1191,6 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/rt/itcms/__new (local $0 i32) (local $1 i32) @@ -1359,64 +1419,4 @@ i32.const 0 memory.fill ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34228 - 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 $~lib/rt/itcms/__new - ) ) diff --git a/tests/compiler/enum-to-string.release.wat b/tests/compiler/enum-to-string.release.wat index 91a870b03a..9e1363df6d 100644 --- a/tests/compiler/enum-to-string.release.wat +++ b/tests/compiler/enum-to-string.release.wat @@ -21,9 +21,6 @@ (data $6.1 (i32.const 1272) "\02\00\00\00\06\00\00\00C\00E\000") (export "memory" (memory $0)) (start $~start) - (func $~start - call $start:enum-to-string - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -186,6 +183,9 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~start + call $start:enum-to-string + ) (func $start:enum-to-string global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/export.release.wat b/tests/compiler/export.release.wat index cab08e7ae1..89f40fe121 100644 --- a/tests/compiler/export.release.wat +++ b/tests/compiler/export.release.wat @@ -11,11 +11,6 @@ (export "b" (global $export/b)) (export "renamed_c" (global $export/c)) (export "memory" (memory $0)) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -26,4 +21,9 @@ local.get $1 i32.mul ) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) ) diff --git a/tests/compiler/exportimport-table.release.wat b/tests/compiler/exportimport-table.release.wat index 9c5d7e1158..57904fd960 100644 --- a/tests/compiler/exportimport-table.release.wat +++ b/tests/compiler/exportimport-table.release.wat @@ -4,9 +4,9 @@ (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") - (elem $0 (i32.const 1) $start:exportimport-table~anonymous|0) + (elem $0 (i32.const 1) $~start) (export "memory" (memory $0)) (export "table" (table $0)) - (func $start:exportimport-table~anonymous|0 + (func $~start ) ) diff --git a/tests/compiler/exports.release.wat b/tests/compiler/exports.release.wat index ec7aad9f8e..c928da80f0 100644 --- a/tests/compiler/exports.release.wat +++ b/tests/compiler/exports.release.wat @@ -12,10 +12,9 @@ (export "renamed_mul" (func $export/mul)) (export "memory" (memory $0)) (export "__setArgumentsLength" (func $~setArgumentsLength)) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) + (func $~setArgumentsLength (param $0 i32) local.get $0 - local.get $1 - i32.add + global.set $~argumentsLength ) (func $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) block $1of1 @@ -35,13 +34,14 @@ local.get $1 i32.sub ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) + (func $exports/add (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i32.mul + i32.add ) - (func $~setArgumentsLength (param $0 i32) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) local.get $0 - global.set $~argumentsLength + local.get $1 + i32.mul ) ) diff --git a/tests/compiler/exportstar-rereexport.release.wat b/tests/compiler/exportstar-rereexport.release.wat index 09cda27fcd..29956c7614 100644 --- a/tests/compiler/exportstar-rereexport.release.wat +++ b/tests/compiler/exportstar-rereexport.release.wat @@ -47,69 +47,6 @@ (export "renamed_default" (func $export-default/theDefault)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $rereexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $rereexport/exportsNamespaceCar - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $reexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -654,145 +591,187 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__visit + return end + return end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + unreachable + ) + (func $exports/Car#get:numDoors (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s if - return + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 + i32.store local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize + (func $exports/Car#constructor (result i32) (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - 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 1560 + i32.lt_s if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34336 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 i32.store - i32.const 35904 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 i32.store loop $for-loop|0 local.get $0 @@ -848,6 +827,315 @@ i32.const 34336 global.set $~lib/rt/tlsf/ROOT ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $rereexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $export-default/theDefault + ) + (func $~start + (local $0 i32) + block $__inlined_func$start:exportstar-rereexport$1 + 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 1560 + i32.lt_s + br_if $folding-inner0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1560 + 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 34328 + 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 + call $exports/Car#get:numDoors + 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 + call $exports/Car#get:numDoors + 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 + call $exports/Car#get:numDoors + 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$1 + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) @@ -1092,78 +1380,21 @@ i32.store local.get $2 call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + end end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) @@ -1394,235 +1625,4 @@ i32.store align=1 local.get $0 ) - (func $export-default/theDefault - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - block $__inlined_func$start:exportstar-rereexport$1 - 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 1560 - i32.lt_s - br_if $folding-inner0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 1560 - 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 34328 - 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 - call $exports/Car#get:numDoors - 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 - call $exports/Car#get:numDoors - 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 - call $exports/Car#get:numDoors - 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$1 - end - i32.const 34352 - i32.const 34400 - i32.const 1 - 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $exports/Car#get:numDoors (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 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/exportstar.release.wat b/tests/compiler/exportstar.release.wat index cab08e7ae1..89f40fe121 100644 --- a/tests/compiler/exportstar.release.wat +++ b/tests/compiler/exportstar.release.wat @@ -11,11 +11,6 @@ (export "b" (global $export/b)) (export "renamed_c" (global $export/c)) (export "memory" (memory $0)) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -26,4 +21,9 @@ local.get $1 i32.mul ) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) ) diff --git a/tests/compiler/extends-baseaggregate.release.wat b/tests/compiler/extends-baseaggregate.release.wat index a4d261ac2c..7ece00a053 100644 --- a/tests/compiler/extends-baseaggregate.release.wat +++ b/tests/compiler/extends-baseaggregate.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (param i32))) (type $1 (func)) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -46,189 +46,6 @@ (data $14.1 (i32.const 1732) "\02A\00\00\02A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - i32.const 1408 - call $~lib/rt/itcms/__visit - i32.const 1616 - call $~lib/rt/itcms/__visit - i32.const 1216 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1280 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1280 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$142 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34508 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$142 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1696 - i32.load - i32.gt_u - if - i32.const 1408 - i32.const 1472 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1700 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -253,330 +70,387 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1552 - i32.const 268 - i32.const 14 + i32.const 1216 + i32.const 1280 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1552 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1216 i32.const 1552 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1552 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1552 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 local.get $3 + local.get $2 + local.get $3 + 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 - local.tee $2 - i32.const 12 - i32.lt_u + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1552 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1552 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -584,520 +458,560 @@ if i32.const 0 i32.const 1552 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1552 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + local.tee $1 + i32.load offset=96 + i32.eq if - local.get $3 - i32.const 4 - i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1552 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end end - else + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 - i32.const 1572 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 i32.add local.get $1 - i32.gt_u + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1552 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1552 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1552 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34512 - i32.const 0 - i32.store - i32.const 36080 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34512 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34512 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 295 + 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 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.add - local.set $0 - br $for-loop|0 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end end - i32.const 34512 - i32.const 36084 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34512 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (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 + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34508 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1280 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$142 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.load offset=8 i32.eqz - local.get $1 - i32.const 3 + local.get $0 + i32.const 34508 + i32.lt_u i32.and - i32.ne + i32.eqz if i32.const 0 i32.const 1280 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 34508 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34508 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + br $__inlined_func$~lib/rt/itcms/Object#unlink$142 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1696 + i32.load + i32.gt_u + if + i32.const 1408 + i32.const 1472 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1700 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $extends-baseaggregate/A2 + block $extends-baseaggregate/A1 + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $extends-baseaggregate/A1 $folding-inner0 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load offset=16 + call $~lib/rt/itcms/__visit + return end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1552 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.load offset=16 + call $~lib/rt/itcms/__visit + return end + local.get $0 + call $~lib/array/Array~visit + return end - i32.const 10 + local.get $0 + call $~lib/array/Array~visit return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + unreachable end - i32.const 0 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1175,428 +1089,300 @@ local.get $1 i32.ctz local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1216 - i32.const 1280 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1216 - i32.const 1552 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else + local.get $0 + i32.load + i32.const -1 local.get $2 - i32.const 19 + i32.const 1 i32.add - i32.const -16 + i32.shl i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u + local.tee $1 if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - local.get $5 + i32.const 0 end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34512 + i32.const 0 + i32.store + i32.const 36080 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34512 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1552 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34512 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $5 + i32.const 34512 + i32.const 36084 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34512 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1552 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + local.get $1 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1552 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - 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 $3 + i32.store offset=1568 local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 1616 + call $~lib/rt/itcms/__visit + i32.const 1216 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - i32.eq - if + local.set $0 + loop $while-continue|0 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 + local.get $1 + i32.ne 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 - local.get $3 + i32.load offset=4 i32.const 3 - i32.eq i32.and + i32.const 3 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1280 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1653,66 +1439,20 @@ local.get $1 i32.const 4 i32.add - local.set $1 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - 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 $folding-inner0 - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $extends-baseaggregate/A2 - block $extends-baseaggregate/A1 - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $extends-baseaggregate/A1 $folding-inner0 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load offset=16 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load offset=16 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return + local.set $1 + br $while-continue|0 end - unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~start (local $0 i32) @@ -1916,144 +1656,404 @@ i32.const 1176 i32.load local.tee $0 - i32.const 2 - i32.shr_u - i32.gt_u + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $2 + i32.const 268435455 + i32.gt_u + if + i32.const 1616 + i32.const 1664 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$141 + i32.const 1073741820 + local.get $0 + i32.const 1 + i32.shl + local.tee $0 + local.get $0 + i32.const 1073741820 + i32.ge_u + select + local.tee $1 + i32.const 8 + local.get $2 + local.get $2 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + local.get $0 + local.get $1 + i32.lt_u + select + local.tee $3 + i32.const 1168 + i32.load + local.tee $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $3 + i32.store offset=16 + local.get $0 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$141 + end + local.get $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $0 + local.get $3 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $3 + i32.gt_u + select + memory.copy + end + local.get $0 + local.get $1 + i32.ne + if + i32.const 1168 + local.get $1 + i32.store + i32.const 1172 + local.get $1 + i32.store + i32.const 1168 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + i32.const 1176 + local.get $3 + i32.store + end + 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 1168 + i32.store + i32.const 1172 + i32.load + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + i32.const 1168 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1180 + local.get $4 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34508 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $2 - i32.const 268435455 - i32.gt_u + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if - i32.const 1616 - i32.const 1664 - i32.const 19 - i32.const 48 + i32.const 0 + i32.const 1280 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$141 - i32.const 1073741820 + local.get $0 + i32.const 34508 + i32.lt_u + if local.get $0 - i32.const 1 - i32.shl - local.tee $0 + i32.const 0 + i32.store offset=4 local.get $0 - i32.const 1073741820 - i32.ge_u - select - local.tee $1 - i32.const 8 - local.get $2 - local.get $2 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total local.get $0 - local.get $1 - i32.lt_u - select - local.tee $3 - i32.const 1168 - i32.load - local.tee $0 - i32.const 20 - i32.sub - local.tee $2 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 4 + i32.add i32.sub - i32.le_u + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34508 + i32.ge_u if - local.get $2 - local.get $3 - i32.store offset=16 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$141 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1552 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - local.get $3 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $0 - local.get $3 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $3 - i32.gt_u - select - memory.copy - end - local.get $0 - local.get $1 - i32.ne - if - i32.const 1168 - local.get $1 - i32.store - i32.const 1172 - local.get $1 - i32.store - i32.const 1168 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link end - i32.const 1176 - local.get $3 - i32.store + i32.const 10 + 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 1168 - i32.store - i32.const 1172 - i32.load - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - i32.const 1168 - local.get $6 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - i32.const 1180 - local.get $4 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - i32.const 34528 - i32.const 34576 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 ) ) diff --git a/tests/compiler/extends-recursive.release.wat b/tests/compiler/extends-recursive.release.wat index f6609aee11..4ae0ed92db 100644 --- a/tests/compiler/extends-recursive.release.wat +++ b/tests/compiler/extends-recursive.release.wat @@ -32,51 +32,6 @@ (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -621,1061 +576,1106 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (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.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.set $4 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $3 - i32.const 4 + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 end - local.get $3 - local.get $1 + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 i32.const 16 + i32.shl + i32.const 4 i32.sub - local.tee $5 - i32.eq + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end + local.get $5 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.load + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + i32.gt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - local.get $3 - i32.const 8 + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub local.tee $3 - i32.const 1 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end unreachable end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl - i32.const 34240 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end end - i32.const 34240 - i32.const 35812 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34240 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if local.get $0 - global.set $~lib/rt/itcms/iter + i32.const 4 + i32.shl local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34236 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34236 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34236 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~start + (local $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u + block $__inlined_func$start:extends-recursive$1 + memory.size i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 + i32.const 34236 + i32.sub i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + 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 + 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 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + local.get $0 + 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 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.ctz - local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + 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 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl i32.add - i32.load offset=96 - else + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 + i32.store + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:extends-recursive$1 end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end - local.get $2 + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.gt_s - br_if $do-loop|0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + 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 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - return end - return + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount return end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $__inlined_func$start:extends-recursive$1 - memory.size - i32.const 16 - i32.shl - i32.const 34236 - 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 - 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 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - 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 - local.get $0 - 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 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - global.get $~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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $0 - i32.eqz + i32.const 34236 + i32.lt_u if - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 + i32.store offset=4 + local.get $0 i32.const 0 - call $~lib/rt/itcms/__new + 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 + local.get $0 + i32.const 4 + i32.add local.tee $0 - i32.store + i32.const 34236 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:extends-recursive$1 + i32.const 10 + return end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) ) diff --git a/tests/compiler/external.release.wat b/tests/compiler/external.release.wat index 26463e94fb..5101b88d4c 100644 --- a/tests/compiler/external.release.wat +++ b/tests/compiler/external.release.wat @@ -1,9 +1,9 @@ (module (type $0 (func)) (import "foo" "var" (global $external/var_ i32)) - (import "external" "foo" (func $external/foo)) (import "external" "bar" (func $external/two)) (import "foo" "baz" (func $external/three)) + (import "external" "foo" (func $external/foo)) (memory $0 0) (export "foo" (func $external/foo)) (export "two" (func $external/two)) diff --git a/tests/compiler/features/reference-types.release.wat b/tests/compiler/features/reference-types.release.wat index 1c580b033e..40fd3e75ca 100644 --- a/tests/compiler/features/reference-types.release.wat +++ b/tests/compiler/features/reference-types.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (result externref))) - (type $1 (func)) - (type $2 (func (param externref) (result externref))) + (type $1 (func (param externref) (result externref))) + (type $2 (func)) (type $3 (func (param i32 i32 i32 i32))) - (import "reference-types" "somethingReal" (func $features/reference-types/somethingReal (result externref))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "reference-types" "somethingNull" (func $features/reference-types/somethingNull (result externref))) + (import "reference-types" "somethingReal" (func $features/reference-types/somethingReal (result externref))) (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) + (import "reference-types" "somethingNull" (func $features/reference-types/somethingNull (result externref))) (global $features/reference-types/funcGlobal (mut funcref) (ref.null nofunc)) (global $features/reference-types/a externref (ref.null noextern)) (global $features/reference-types/b funcref (ref.null nofunc)) @@ -28,14 +28,6 @@ (export "nonNullReal" (global $features/reference-types/nonNullReal)) (export "memory" (memory $0)) (start $~start) - (func $features/reference-types/someFunc - ) - (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 (local $0 externref) call $features/reference-types/somethingReal @@ -111,4 +103,12 @@ local.get $0 global.set $features/reference-types/nonNullReal ) + (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 $features/reference-types/someFunc + ) ) diff --git a/tests/compiler/features/threads.release.wat b/tests/compiler/features/threads.release.wat index 679c863058..3db113d7ca 100644 --- a/tests/compiler/features/threads.release.wat +++ b/tests/compiler/features/threads.release.wat @@ -3,7 +3,11 @@ (memory $0 1 10 shared) (export "memory" (memory $0)) (start $~start) - (func $features/threads/testAtomic + (func $~start + call $features/threads/testAtomic + call $features/threads/testAtomicAsm + ) + (func $features/threads/testAtomicAsm i32.const 0 i32.atomic.load8_u drop @@ -25,9 +29,6 @@ i32.const 0 i64.atomic.load drop - i32.const 8 - i64.atomic.load - drop i32.const 0 i32.const 1 i32.atomic.store8 @@ -49,9 +50,6 @@ i32.const 0 i64.const 1 i64.atomic.store - i32.const 8 - i64.const 1 - i64.atomic.store i32.const 0 i32.const 1 i32.atomic.rmw8.add_u @@ -81,10 +79,6 @@ i64.atomic.rmw.add drop i32.const 0 - i64.const 1 - i64.atomic.rmw.add offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.sub_u drop @@ -113,10 +107,6 @@ i64.atomic.rmw.sub drop i32.const 0 - i64.const 1 - i64.atomic.rmw.sub offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.and_u drop @@ -145,10 +135,6 @@ i64.atomic.rmw.and drop i32.const 0 - i64.const 1 - i64.atomic.rmw.and offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.or_u drop @@ -177,10 +163,6 @@ i64.atomic.rmw.or drop i32.const 0 - i64.const 1 - i64.atomic.rmw.or offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.xor_u drop @@ -209,10 +191,6 @@ i64.atomic.rmw.xor drop i32.const 0 - i64.const 1 - i64.atomic.rmw.xor offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.xchg_u drop @@ -241,10 +219,6 @@ i64.atomic.rmw.xchg drop i32.const 0 - i64.const 1 - i64.atomic.rmw.xchg offset=8 - drop - i32.const 0 i32.const 1 i32.const 2 i32.atomic.rmw8.cmpxchg_u @@ -279,13 +253,8 @@ i64.const 2 i64.atomic.rmw.cmpxchg drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw.cmpxchg offset=8 - drop ) - (func $features/threads/testAtomicAsm + (func $features/threads/testAtomic i32.const 0 i32.atomic.load8_u drop @@ -307,6 +276,9 @@ i32.const 0 i64.atomic.load drop + i32.const 8 + i64.atomic.load + drop i32.const 0 i32.const 1 i32.atomic.store8 @@ -328,6 +300,9 @@ i32.const 0 i64.const 1 i64.atomic.store + i32.const 8 + i64.const 1 + i64.atomic.store i32.const 0 i32.const 1 i32.atomic.rmw8.add_u @@ -357,6 +332,10 @@ i64.atomic.rmw.add drop i32.const 0 + i64.const 1 + i64.atomic.rmw.add offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.sub_u drop @@ -385,6 +364,10 @@ i64.atomic.rmw.sub drop i32.const 0 + i64.const 1 + i64.atomic.rmw.sub offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.and_u drop @@ -413,6 +396,10 @@ i64.atomic.rmw.and drop i32.const 0 + i64.const 1 + i64.atomic.rmw.and offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.or_u drop @@ -441,6 +428,10 @@ i64.atomic.rmw.or drop i32.const 0 + i64.const 1 + i64.atomic.rmw.or offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.xor_u drop @@ -469,6 +460,10 @@ i64.atomic.rmw.xor drop i32.const 0 + i64.const 1 + i64.atomic.rmw.xor offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.xchg_u drop @@ -497,6 +492,10 @@ i64.atomic.rmw.xchg drop i32.const 0 + i64.const 1 + i64.atomic.rmw.xchg offset=8 + drop + i32.const 0 i32.const 1 i32.const 2 i32.atomic.rmw8.cmpxchg_u @@ -531,9 +530,10 @@ i64.const 2 i64.atomic.rmw.cmpxchg drop - ) - (func $~start - call $features/threads/testAtomic - call $features/threads/testAtomicAsm + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw.cmpxchg offset=8 + drop ) ) diff --git a/tests/compiler/field-initialization.release.wat b/tests/compiler/field-initialization.release.wat index 2c9e66006c..187b718ade 100644 --- a/tests/compiler/field-initialization.release.wat +++ b/tests/compiler/field-initialization.release.wat @@ -1,9 +1,9 @@ (module (type $0 (func)) - (type $1 (func (param i32))) + (type $1 (func (param i32 i32) (result i32))) (type $2 (func (param i32 i32))) (type $3 (func (result i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) @@ -50,322 +50,798 @@ (data $16.1 (i32.const 1832) " \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1536 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + 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$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 20 + 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 - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/threshold end end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$241 - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34668 + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 i32.lt_u - i32.and - i32.eqz + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$241 end - local.get $0 - i32.load offset=8 + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if i32.const 0 - i32.const 1120 - i32.const 132 + i32.const 1392 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - 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 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - local.get $1 - i32.const 1792 + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1796 + i32.const -4 + i32.and i32.add + local.tee $3 + local.get $3 i32.load - i32.const 32 + i32.const -3 i32.and + i32.store end - local.set $3 local.get $2 - i32.load offset=8 - local.set $1 + local.get $1 + i32.store offset=12 + local.get $2 local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 + local.get $3 + local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $2 - local.get $0 i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) + 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 + i32.const 0 local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 i32.eqz if return end - global.get $~lib/rt/itcms/white local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + 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 $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and i32.eq if local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount + 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 + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + if + i32.const 34688 + i32.const 34736 i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + 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 + i32.const 0 + i32.const 1 + 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 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$118 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$118 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 - local.tee $4 + i32.const 3 + i32.and + i32.eq if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.get $5 + ) + (func $~lib/object/Object#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 1900 + i32.lt_s if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 34688 + i32.const 34736 + 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 local.get $0 - local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $field-initialization/SomeObject#constructor (param $0 i32) (result 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 1900 + i32.lt_s if - local.get $1 - local.get $5 - i32.store offset=96 + i32.const 34688 + i32.const 34736 + 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.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 local.get $5 i32.eqz if @@ -645,503 +1121,235 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 + i32.const 1120 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$241 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34668 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$241 end - else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=8 + local.tee $2 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + 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 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and end - local.get $1 - local.get $4 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - 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 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + 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/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $field-initialization/SomeOtherObject + block $field-initialization/SomeObject + block $field-initialization/Value_Ctor_Init + block $field-initialization/Value_Init_Ctor + block $field-initialization/Value_Ctor + block $field-initialization/Value + block $field-initialization/Value_Init + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $field-initialization/Value_Init $field-initialization/Value $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/SomeObject $field-initialization/SomeOtherObject $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + return + end unreachable end - i32.const 34672 - i32.const 0 - i32.store - i32.const 36240 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl - i32.const 34672 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34672 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $1 end - end - i32.const 34672 - i32.const 36244 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34672 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34668 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34668 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34668 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end local.get $1 i32.const 16 @@ -1199,463 +1407,279 @@ local.tee $1 i32.const 2 i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - local.get $5 + i32.const 0 end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34672 + i32.const 0 + i32.store + i32.const 36240 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34672 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34672 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $5 + i32.const 34672 + i32.const 36244 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34672 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + local.get $1 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - 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 $3 + i32.store offset=1568 local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1536 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - i32.eq - if + local.set $0 + loop $while-continue|0 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 + local.get $1 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq local.get $0 + i32.load offset=4 i32.const 3 - i32.eq i32.and + i32.const 3 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $field-initialization/SomeOtherObject - block $field-initialization/SomeObject - block $field-initialization/Value_Ctor_Init - block $field-initialization/Value_Init_Ctor - block $field-initialization/Value_Ctor - block $field-initialization/Value - block $field-initialization/Value_Init - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $field-initialization/Value_Init $field-initialization/Value $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/SomeObject $field-initialization/SomeOtherObject $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i32.const 20 + i32.add + call $~lib/rt/__visit_members local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - return + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - unreachable end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:field-initialization ) - (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) - (local $1 i32) + (func $field-initialization/SomeOtherObject#constructor (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1673,49 +1697,38 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 19 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end + i32.const 12 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/object/Object#constructor + call $field-initialization/SomeObject#constructor local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $0 - local.get $1 - i32.store + i32.const 0 + i32.store offset=8 local.get $0 - local.get $1 + i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $field-initialization/SomeObject#constructor (param $0 i32) (result i32) + (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1732,12 +1745,15 @@ 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.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 21 + i32.const 4 + i32.const 19 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1753,234 +1769,285 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $0 - i32.const 0 - i32.store + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 + local.get $1 + i32.store local.get $0 - i32.const 0 + local.get $1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~start + call $start:field-initialization + ) + (func $~lib/rt/itcms/step (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1900 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $2 - i32.const 8 - i32.add - local.set $2 + local.get $0 + global.set $~lib/rt/itcms/iter 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-loop|0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34668 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - block $__inlined_func$~lib/util/string/compareImpl$118 - loop $while-continue|1 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34668 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34668 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$118 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $field-initialization/SomeOtherObject#constructor (result i32) - (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 1900 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) (func $start:field-initialization (local $0 i32) @@ -3422,71 +3489,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#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 1900 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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 0 - i32.const 0 - 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 - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 1900 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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 - i32.const 0 - i32.const 1 - 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 - ) ) diff --git a/tests/compiler/field.release.wat b/tests/compiler/field.release.wat index 261f97f09c..da05c7bb6a 100644 --- a/tests/compiler/field.release.wat +++ b/tests/compiler/field.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) (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,183 +35,6 @@ (data $9.1 (i32.const 1496) "\02A\00\00\02\t") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$127 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34272 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$127 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - 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 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -236,851 +59,1220 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34272 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + local.tee $1 + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34272 + 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 -2 - local.get $2 - i32.rotl + i32.const -4 i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34272 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + i32.const 0 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.const 2 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 i32.add - i32.ne + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1056 i32.const 1392 - i32.const 234 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store local.get $2 - i32.const 256 - i32.lt_u + i32.const 12 + i32.le_u if (result i32) - local.get $2 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 i32.sub - local.set $5 - local.get $2 - local.get $3 + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $2 - i32.const 16 - i32.lt_u local.get $5 - i32.const 23 - i32.lt_u + local.get $2 + i32.load + i32.const -4 i32.and - i32.eqz + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 251 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl + local.get $4 local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl + call $~lib/rt/tlsf/removeBlock local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 + local.set $6 local.get $5 - i32.const 2 - i32.shl + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + i32.const 15 + i32.and if i32.const 0 i32.const 1392 - i32.const 382 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $6 + i32.const -4 i32.and - i32.const 4 + local.get $5 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 local.tee $3 + i32.const 16 + i32.ge_u if - local.get $3 + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 i32.const 4 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + local.get $5 + i32.add + local.tee $5 local.get $3 - local.get $1 - i32.const 16 + i32.const 4 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - local.get $0 - i32.const 1572 + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end + local.get $2 local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - i32.lt_s - else + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34272 - i32.const 0 - i32.store - i32.const 35840 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34272 i32.add - i32.const 0 + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 34272 - i32.const 35844 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34272 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34272 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$127 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.load offset=8 i32.eqz - local.get $1 - i32.const 3 + local.get $0 + i32.const 34272 + i32.lt_u i32.and - i32.ne + i32.eqz if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 34272 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34272 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + br $__inlined_func$~lib/rt/itcms/Object#unlink$127 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + 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 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $field/NoStaticConflict + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field/NoStaticConflict $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - global.get $~lib/rt/tlsf/ROOT - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 15 - i32.and - i32.const 1 + i32.store local.get $0 - select - if (result i32) - i32.const 1 - else + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $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.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + br $folding-inner1 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 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 end - i32.const 10 - return + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1160,369 +1352,294 @@ local.get $2 i32.const 4 i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne + i32.add + i32.const 2 i32.shl i32.add - i32.const 65535 + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 i32.add - i32.const -65536 + i32.shl i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort unreachable end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable end end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort + i32.lt_s + else + i32.const 0 + end + if unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 361 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 @@ -1578,6 +1695,9 @@ end end ) + (func $~start + call $start:field + ) (func $start:field (local $0 i32) (local $1 i32) @@ -1789,124 +1909,4 @@ 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/array/Array - block $~lib/array/Array<~lib/string/String> - block $field/NoStaticConflict - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field/NoStaticConflict $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1504 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $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 - br $folding-inner1 - 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 1504 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - unreachable - end - i32.const 34304 - i32.const 34352 - 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 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - call $start:field - ) ) diff --git a/tests/compiler/for.release.wat b/tests/compiler/for.release.wat index ca1402923b..d638bb953f 100644 --- a/tests/compiler/for.release.wat +++ b/tests/compiler/for.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -34,245 +34,524 @@ (data $9 (i32.const 1472) "\05\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/visitRoots + (func $for/Ref#constructor (result i32) (local $0 i32) (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + 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 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.ne + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/__visit (param $0 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$128 - local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34264 - i32.lt_u - i32.and - i32.eqz + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$128 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1472 - i32.load - i32.gt_u + i32.eq if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.const 2 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34264 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34264 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $2 - local.get $1 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + local.get $0 i32.eqz if - i32.const 0 - i32.const 1424 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $3 - i32.const -4 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 i32.and - local.tee $3 - i32.const 12 - i32.lt_u + i32.eq if - i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34264 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 i32.const 1073741820 local.get $3 local.get $3 @@ -623,514 +902,327 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34272 - i32.const 0 - i32.store - i32.const 35840 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34272 - i32.const 35844 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34272 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34264 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $for/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid + end + return + end + return + end + return end - global.get $~lib/rt/itcms/visitCount + local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne if i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 + i32.const 1424 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34264 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34264 - i32.ge_u + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.add + local.set $1 + br $for-loop|1 end end - i32.const 10 - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 + i32.const 1152 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1364,10 +1456,14 @@ memory.fill local.get $0 ) + (func $~start + call $start:for + ) (func $start:for (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) loop $for-loop|0 local.get $0 i32.const 10 @@ -1491,11 +1587,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $3 br_if $for-loop|06 end - local.get $0 - i32.const 10 - i32.ne + local.get $3 if i32.const 0 i32.const 1056 @@ -1808,99 +1903,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $for/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - call $start:for - ) - (func $for/Ref#constructor (result i32) - (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 1496 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1496 - 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 0 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34288 - i32.const 34336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/function-call.release.wat b/tests/compiler/function-call.release.wat index 70c6d33f25..ae676fe060 100644 --- a/tests/compiler/function-call.release.wat +++ b/tests/compiler/function-call.release.wat @@ -56,67 +56,6 @@ (elem $0 (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|0 $start:function-call~anonymous|2 $start:function-call~anonymous|2 $start:function-call~fn2|4 $function-call/Foo#fnVoid $start:function-call~fn2|4 $function-call/Foo#fnRet) (export "memory" (memory $0)) (start $~start) - (func $start:function-call~anonymous|0 - ) - (func $start:function-call~anonymous|2 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:function-call~fn2|4 (param $0 i32) (result i32) - i32.const 1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $function-call/foo - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -661,6 +600,201 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $function-call/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $function-call/Foo $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + 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 1804 + i32.lt_s + if + i32.const 34592 + i32.const 34640 + 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.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34576 + i32.const 0 + i32.store + i32.const 36144 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34576 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34576 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34576 + i32.const 36148 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34576 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -775,568 +909,222 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $function-call/foo + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34576 - i32.const 0 - i32.store - i32.const 36144 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34576 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34576 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34576 - i32.const 36148 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34576 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (local $3 i32) + (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$69 + i32.const 2048 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + 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 $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34572 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + unreachable end - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34572 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34572 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 i32.and - local.tee $1 - if (result i32) - local.get $0 + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if local.get $1 - i32.ctz + local.get $3 i32.const 2 - i32.shl + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 i32.add - i32.load offset=96 + 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 $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - 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 $1 - local.get $3 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store @@ -1402,72 +1190,19 @@ memory.fill local.get $0 ) - (func $function-call/Foo#fnVoid (param $0 i32) + (func $start:function-call~fn2|4 (param $0 i32) (result i32) + i32.const 1 ) - (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 3 + (func $start:function-call~anonymous|2 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $function-call/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $function-call/Foo $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - 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 1804 - i32.lt_s - if - i32.const 34592 - i32.const 34640 - 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.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - (local $0 i32) - (local $1 i32) + (func $start:function-call~anonymous|0 + ) + (func $~start + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1651,4 +1386,269 @@ call $~lib/builtins/abort unreachable ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34572 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34572 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34572 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $function-call/Foo#fnVoid (param $0 i32) + ) + (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 3 + ) ) diff --git a/tests/compiler/function-expression.release.wat b/tests/compiler/function-expression.release.wat index b0f7aeb1d8..560499a4a1 100644 --- a/tests/compiler/function-expression.release.wat +++ b/tests/compiler/function-expression.release.wat @@ -76,205 +76,6 @@ (export "semanticallyAnonymous" (func $function-expression/semanticallyAnonymous)) (export "memory" (memory $0)) (start $~start) - (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) - local.get $0 - ) - (func $start:function-expression~someName|2 - ) - (func $start:function-expression~anonymous|3 (result i32) - i32.const 1 - ) - (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) - i32.const 3 - ) - (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) - i32.const 1 - ) - (func $start:function-expression~anonymous|6 (param $0 i32) (param $1 i32) (result i32) - i32.const 42 - ) - (func $start:function-expression~anonymous|7~anonymous|0 (param $0 i32) (result i32) - local.get $0 - i32.const 24 - i32.add - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1792 - call $~lib/rt/itcms/__visit - i32.const 1600 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1664 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1664 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$133 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34924 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$133 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2112 - i32.load - i32.gt_u - if - i32.const 1792 - i32.const 1856 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 2116 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -299,6 +100,9 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) + local.get $0 + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -691,57 +495,392 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1936 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1936 - i32.const 389 - i32.const 16 + i32.const 1664 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$133 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34924 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$133 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2112 + i32.load + i32.gt_u + if + i32.const 1792 + i32.const 1856 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2116 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $function-expression/FieldClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $function-expression/FieldClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + 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 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + 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.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:function-expression~anonymous|7~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 24 + i32.add + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34928 + i32.const 0 + i32.store + i32.const 36496 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34928 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34928 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34928 + i32.const 36500 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34928 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1936 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 local.get $5 local.set $1 end @@ -805,85 +944,92 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size + i32.const 1792 + call $~lib/rt/itcms/__visit + i32.const 1600 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34928 - i32.const 0 - i32.store - i32.const 36496 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34928 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1664 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34928 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34928 - i32.const 36500 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34928 - global.set $~lib/rt/tlsf/ROOT + ) + (func $start:function-expression~anonymous|6 (param $0 i32) (param $1 i32) (result i32) + i32.const 42 + ) + (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) + i32.const 1 + ) + (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) + i32.const 3 + ) + (func $start:function-expression~anonymous|3 (result i32) + i32.const 1 + ) + (func $function-expression/semanticallyAnonymous + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + 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 + i32.const 2064 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:function-expression ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1145,63 +1291,6 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1936 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) (local $1 i32) @@ -1431,65 +1520,9 @@ i32.store align=1 local.get $0 ) - (func $function-expression/semanticallyAnonymous - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2156 - i32.lt_s - if - i32.const 34944 - i32.const 34992 - 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 - i32.const 2064 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + (func $start:function-expression~someName|2 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $function-expression/FieldClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $function-expression/FieldClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - end + (func $start:function-expression~anonymous|7 (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1509,18 +1542,13 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1472 i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - ) - (func $~start - call $start:function-expression + i32.const 1472 ) (func $start:function-expression (local $0 i32) @@ -1923,34 +1951,6 @@ call $~lib/builtins/abort unreachable ) - (func $start:function-expression~anonymous|7 (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 2156 - i32.lt_s - if - i32.const 34944 - i32.const 34992 - 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 - i32.const 1472 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1472 - ) (func $function-expression/testLocal~anonymous|0 (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/function-inline-regressions.release.wat b/tests/compiler/function-inline-regressions.release.wat index 8fb2f2a946..0f2d81b39f 100644 --- a/tests/compiler/function-inline-regressions.release.wat +++ b/tests/compiler/function-inline-regressions.release.wat @@ -1,16 +1,10 @@ (module - (type $0 (func (param i32))) - (type $1 (func (param i32 i32 i32) (result i32))) + (type $0 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32))) (memory $0 0) (export "baz" (func $function-inline-regressions/baz)) (export "foo" (func $function-inline-regressions/foo)) (export "memory" (memory $0)) - (func $function-inline-regressions/baz (param $0 i32) - local.get $0 - if - unreachable - end - ) (func $function-inline-regressions/foo (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 @@ -39,4 +33,10 @@ i32.store local.get $3 ) + (func $function-inline-regressions/baz (param $0 i32) + local.get $0 + if + unreachable + end + ) ) diff --git a/tests/compiler/function-types.release.wat b/tests/compiler/function-types.release.wat index 726e8230ce..5b3f80a227 100644 --- a/tests/compiler/function-types.release.wat +++ b/tests/compiler/function-types.release.wat @@ -27,12 +27,6 @@ local.get $1 i32.add ) - (func $function-types/makeAdder~anonymous|0 (param $0 i64) (param $1 i64) (result i64) - i64.const 30 - ) - (func $function-types/makeAdder~anonymous|0 (param $0 f64) (param $1 f64) (result f64) - f64.const 4 - ) (func $~start (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -213,4 +207,10 @@ call $~lib/builtins/abort unreachable ) + (func $function-types/makeAdder~anonymous|0 (param $0 i64) (param $1 i64) (result i64) + i64.const 30 + ) + (func $function-types/makeAdder~anonymous|0 (param $0 f64) (param $1 f64) (result f64) + f64.const 4 + ) ) diff --git a/tests/compiler/getter-call.release.wat b/tests/compiler/getter-call.release.wat index 29a2cdc6e9..9794ae6bb1 100644 --- a/tests/compiler/getter-call.release.wat +++ b/tests/compiler/getter-call.release.wat @@ -37,51 +37,6 @@ (export "test" (func $getter-call/test)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -626,6 +581,202 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $getter-call/C + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + 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 1500 + i32.lt_s + if + i32.const 34288 + i32.const 34336 + 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.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -740,400 +891,48 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34272 - i32.const 0 - i32.store - i32.const 35840 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34272 - i32.const 35844 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34272 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34268 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34268 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34268 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__visit_members local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1367,101 +1166,299 @@ memory.fill local.get $0 ) - (func $getter-call/C#get:x~anonymous|0 (result i32) - i32.const 42 + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34268 + 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 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28%29=>i32> - block $getter-call/C - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid - end - return + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34268 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - return + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - return end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount return 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 1500 - i32.lt_s + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 34288 - i32.const 34336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34268 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34268 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.set $~lib/rt/itcms/state end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34268 - 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 ) (func $getter-call/test (result i32) (local $0 i32) @@ -1553,4 +1550,7 @@ call $~lib/builtins/abort unreachable ) + (func $getter-call/C#get:x~anonymous|0 (result i32) + i32.const 42 + ) ) diff --git a/tests/compiler/getter-setter.release.wat b/tests/compiler/getter-setter.release.wat index dc779d8714..b626215eec 100644 --- a/tests/compiler/getter-setter.release.wat +++ b/tests/compiler/getter-setter.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (memory $0 1) diff --git a/tests/compiler/heap.release.wat b/tests/compiler/heap.release.wat index c3ebb5261b..cf51676de3 100644 --- a/tests/compiler/heap.release.wat +++ b/tests/compiler/heap.release.wat @@ -4,8 +4,8 @@ (type $2 (func)) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $heap/ptr (mut i32) (i32.const 0)) @@ -408,119 +408,77 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u + i32.load + local.set $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 i32.const 1056 - i32.const 382 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $3 + i32.const -4 i32.and - i32.const 4 + local.get $2 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - 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.or + i32.store + local.get $1 i32.const 4 i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1056 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 + i32.const -2 + i32.and + i32.store local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.const 4 i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1056 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -602,32 +560,35 @@ i32.const 33936 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 1120 - i32.const 1056 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.const 12 - i32.le_u + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select if (result i32) - i32.const 12 + i32.const 1 else - local.get $0 - i32.const 19 - i32.add - i32.const -16 + local.get $1 + i32.load + i32.const 1 i32.and - i32.const 4 - i32.sub end + if + i32.const 0 + i32.const 1056 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -757,77 +718,64 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1120 i32.const 1056 - i32.const 361 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + i32.const 12 + i32.le_u + 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/moveBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 32 + 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 - local.get $2 - i32.sub - local.tee $4 - i32.const 16 + memory.copy + local.get $1 + i32.const 33932 i32.ge_u if local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 4 - i32.sub + i32.load i32.const 1 i32.or i32.store local.get $0 local.get $1 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.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and - i32.store end + local.get $2 ) (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -947,67 +895,119 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - 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 + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1056 - i32.const 562 - i32.const 3 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 32 - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - i32.const 4 - i32.add - local.get $1 - i32.const 4 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - memory.copy - local.get $1 - i32.const 33932 - i32.ge_u + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if + local.get $3 + i32.const 4 + i32.add local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 local.get $1 - i32.load - i32.const 1 - i32.or - i32.store + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else local.get $0 + i32.const 1572 + i32.add local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) (func $~start (local $0 i32) @@ -1045,12 +1045,12 @@ call $~lib/rt/tlsf/moveBlock local.set $0 else + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 block $__inlined_func$~lib/rt/tlsf/reallocateBlock$53 - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.set $0 i32.const 32 call $~lib/rt/tlsf/prepareSize local.tee $5 diff --git a/tests/compiler/import-memory.release.wat b/tests/compiler/import-memory.release.wat index be4cb9b4ae..2b56107252 100644 --- a/tests/compiler/import-memory.release.wat +++ b/tests/compiler/import-memory.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) (import "env" "memory" (memory $0 1)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (data $0 (i32.const 1036) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00m\00p\00o\00r\00t\00-\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") diff --git a/tests/compiler/incremental-gc/call-indirect.release.wat b/tests/compiler/incremental-gc/call-indirect.release.wat index 341dd11ee9..f43270e2d3 100644 --- a/tests/compiler/incremental-gc/call-indirect.release.wat +++ b/tests/compiler/incremental-gc/call-indirect.release.wat @@ -2,8 +2,8 @@ (type $0 (func)) (type $1 (func (param i32) (result i32))) (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (result i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32) (result i32))) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) @@ -40,51 +40,6 @@ (export "issue_2923" (func $incremental-gc/call-indirect/issue_2923)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1168 - call $~lib/rt/itcms/__visit - i32.const 1376 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -237,168 +192,271 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1312 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 + local.set $0 + loop $while-continue|1 local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34352 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1072 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34352 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34352 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1312 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1312 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 i32.load local.tee $3 @@ -408,45 +466,202 @@ if i32.const 0 i32.const 1312 - i32.const 203 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $3 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.tee $3 + i32.const 12 + i32.lt_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.const 0 + i32.const 1312 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and i32.add local.tee $4 i32.load @@ -629,459 +844,381 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (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.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1312 - i32.const 382 - i32.const 14 + i32.const 1376 + i32.const 1072 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1312 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - else - local.get $0 - i32.const 1572 + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1376 + i32.const 1312 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $1 - i32.gt_u + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if i32.const 0 i32.const 1312 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end + local.get $5 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.load + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + i32.gt_u if - return + i32.const 0 + i32.const 1312 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - local.get $3 - i32.const 8 + if + i32.const 0 + i32.const 1312 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub local.tee $3 - i32.const 1 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34352 - i32.const 0 - i32.store - i32.const 35920 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34352 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34352 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34352 - i32.const 35924 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34352 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34352 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $incremental-gc/call-indirect/B + block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> + block $incremental-gc/call-indirect/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid + end + return + end + return end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34352 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34352 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - local.get $2 - local.get $2 + local.get $0 i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + call $~lib/rt/itcms/__visit + return end + return end - i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + 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.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1211,380 +1348,350 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1376 - i32.const 1072 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1376 - i32.const 1312 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 + i32.const 1 + local.get $1 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34352 + i32.const 0 + i32.store + i32.const 35920 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34352 + i32.add i32.const 0 - i32.lt_s - if - unreachable + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $5 + i32.const 34352 + i32.const 35924 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34352 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1312 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + local.get $1 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1312 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1312 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1312 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $incremental-gc/call-indirect/B - block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> - block $incremental-gc/call-indirect/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - 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 1584 - i32.lt_s + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 1376 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1072 + i32.const 160 + i32.const 16 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.store + i32.const 20 + i32.add + call $~lib/rt/__visit_members local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end + end + ) + (func $~lib/object/Object#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 1584 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + 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 0 + i32.const 0 + 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 + ) + (func $incremental-gc/call-indirect/issue_2923 (result i32) + (local $0 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 1584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 1584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 1440 + i32.store offset=4 + local.get $0 + i32.const 1440 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer return end + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) (func $~start @@ -1736,111 +1843,4 @@ call $~lib/builtins/abort unreachable ) - (func $incremental-gc/call-indirect/issue_2923 (result i32) - (local $0 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 1584 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 1584 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 1440 - i32.store offset=4 - local.get $0 - i32.const 1440 - i32.load - call_indirect (type $1) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/object/Object#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 1584 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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 0 - i32.const 0 - 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 - ) ) diff --git a/tests/compiler/infer-array.release.wat b/tests/compiler/infer-array.release.wat index 0203c65137..a256276d6d 100644 --- a/tests/compiler/infer-array.release.wat +++ b/tests/compiler/infer-array.release.wat @@ -1,13 +1,13 @@ (module (type $0 (func (param i32))) - (type $1 (func)) - (type $2 (func (param i32 i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32 i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i64))) (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)) @@ -70,186 +70,68 @@ (data $25 (i32.const 2160) "\r\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\1a\00\00\02\01\00\00\02\19\00\00 \00\00\00\02a\00\00\02a\00\00\02\01\00\00\02A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1744 - call $~lib/rt/itcms/__visit - i32.const 2048 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 + (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 + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$154 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34984 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$154 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + i32.const 35008 + i32.const 35056 i32.const 1 - else - local.get $1 - i32.const 2160 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 2164 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + local.get $1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $1 local.get $3 - select + if + local.get $1 + local.get $3 + local.get $5 + memory.copy + end + local.get $1 + i32.store + i32.const 16 local.get $2 - i32.or - i32.store offset=4 - local.get $0 + call $~lib/rt/itcms/__new + local.tee $2 local.get $1 - i32.store offset=8 + i32.store + local.get $2 local.get $1 - local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 local.get $2 - local.get $0 + local.get $5 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/rt/itcms/__visit (param $0 i32) local.get $0 @@ -275,851 +157,1432 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if + (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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1280 + i32.const 1488 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $7 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $5 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1744 + i32.const 1488 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $4 + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $6 + local.get $0 + i32.load + local.tee $3 + 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 $6 + i32.store offset=16 + local.get $3 + local.set $4 + br $__inlined_func$~lib/rt/itcms/__renew$149 + end + local.get $6 + local.get $5 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $4 + local.get $3 + local.get $6 + local.get $5 + i32.load offset=16 + local.tee $5 + local.get $5 + local.get $6 + i32.gt_u + select + memory.copy + end + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $4 + i32.store + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + 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.get $0 + i32.store + local.get $0 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s if - i32.const 0 - i32.const 1424 - i32.const 284 - i32.const 14 + i32.const 35008 + i32.const 35056 + 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.store local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + (func $~lib/array/Array#__get (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 2216 + i32.lt_s if - i32.const 0 - i32.const 1424 - i32.const 201 - i32.const 14 + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 i32.eqz if - i32.const 0 - i32.const 1424 - i32.const 203 - i32.const 14 + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 i32.load - i32.const -4 - i32.and + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.const 2 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - i32.const 12 - i32.lt_u + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1088 i32.const 1424 - i32.const 233 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u + i32.const 12 + i32.le_u if (result i32) - local.get $2 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $2 local.get $2 - i32.const 1073741820 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 i32.ge_u - select + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 + i32.const 16 + i32.shl i32.const 4 i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $2 - i32.const 16 - i32.lt_u local.get $5 - i32.const 23 - i32.lt_u + local.get $2 + i32.load + i32.const -4 i32.and - i32.eqz + i32.gt_u if i32.const 0 i32.const 1424 - i32.const 251 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl + local.get $4 local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl + call $~lib/rt/tlsf/removeBlock local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 + local.set $6 local.get $5 - i32.const 2 - i32.shl + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + i32.const 15 + i32.and if i32.const 0 i32.const 1424 - i32.const 382 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $6 + i32.const -4 i32.and - i32.const 4 + local.get $5 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 local.tee $3 + i32.const 16 + i32.ge_u if - local.get $3 + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 i32.const 4 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + local.get $5 + i32.add + local.tee $5 local.get $3 - local.get $1 - i32.const 16 + i32.const 4 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end + 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 $3 + local.get $2 local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $infer-array/Ref#constructor (result i32) (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow + 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 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 i32.lt_s - else + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - end - if - unreachable - end - i32.const 34992 - i32.const 0 - i32.store - i32.const 36560 - i32.const 0 - i32.store - loop $for-loop|0 + i32.store local.get $0 - i32.const 23 - i32.lt_u + i32.eqz if - local.get $0 - i32.const 2 - i32.shl - i32.const 34992 - i32.add + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34992 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 34992 - i32.const 36564 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34992 - global.set $~lib/rt/tlsf/ROOT + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + (func $~lib/array/Array#__get (param $0 i32) (param $1 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 2216 + i32.lt_s + if + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + 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 $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 i32.load offset=4 - i32.const -4 + i32.const -2 + local.get $3 + i32.rotl i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 295 + 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 + 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 + local.get $3 + i32.const 3 + i32.eq + i32.and if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34984 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + call $~lib/rt/itcms/Object#makeGray end - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + end + ) + (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 + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$154 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.load offset=8 i32.eqz - local.get $1 - i32.const 3 + local.get $0 + i32.const 34984 + i32.lt_u i32.and - i32.ne + i32.eqz if i32.const 0 i32.const 1152 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$154 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2160 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2164 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-array/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + 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 2216 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 34984 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + 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.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $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 $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 + local.get $1 i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34984 - i32.ge_u + local.tee $3 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + 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 - i32.const 10 - return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 0 + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1146,651 +1609,351 @@ 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.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1088 - i32.const 1424 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 + local.set $1 end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub local.tee $2 - i32.const 16 - i32.shl i32.const 4 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - local.get $5 + local.get $1 + i32.const 16 + i32.lt_u local.get $2 - i32.load - i32.const -4 + i32.const 23 + i32.lt_u i32.and - i32.gt_u + i32.eqz if i32.const 0 i32.const 1424 - i32.const 501 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock + local.get $0 local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + i32.const 2 + i32.shl i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1424 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz local.get $2 i32.const 4 + i32.shl i32.add - local.get $5 + i32.const 2 + i32.shl i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.load offset=96 else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 + local.get $0 i32.load - i32.const -4 - i32.and + i32.const -1 + local.get $2 + i32.const 1 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 + i32.shl i32.and - i32.store + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size local.tee $1 i32.const 0 - local.get $0 - memory.fill - local.get $1 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34992 + i32.const 0 + i32.store + i32.const 36560 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34992 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34992 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34992 + i32.const 36564 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34992 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz + i64.extend_i32_u + i64.lt_u if i32.const 0 - i32.const 1152 - i32.const 295 + i32.const 1424 + i32.const 382 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.const 19 + i32.add + i32.const -16 i32.and - i32.eq + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $0 - i32.const 20 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 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 + local.tee $5 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 local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $infer-array/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - 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 2216 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 i32.load - call $~lib/rt/itcms/__visit - 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.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $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 + local.set $4 + local.get $5 + local.set $1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + else local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1572 i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:infer-array - ) - (func $~lib/array/Array#__get (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + 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 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store local.get $0 - i32.load offset=12 - i32.eqz - if - i32.const 1280 - i32.const 1488 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1744 + call $~lib/rt/itcms/__visit + i32.const 2048 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.load - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/array/Array#__get (param $0 i32) global.get $~lib/memory/__stack_pointer @@ -1837,55 +2000,6 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - if - i32.const 35008 - i32.const 35056 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1280 - i32.const 1488 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1936,319 +2050,268 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $infer-array/Ref#constructor (result i32) + (func $~start + call $start:infer-array + ) + (func $~lib/rt/itcms/step (result i32) (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 2216 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - 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 0 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34984 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - 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 2216 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 0 - i32.lt_s + i32.const 3 + i32.and + i32.ne if - i32.const 1280 - i32.const 1488 - i32.const 130 - i32.const 22 + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - i32.add - local.tee $6 - 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 2216 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $3 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u + i32.const 34984 + i32.lt_u if - local.get $3 - i32.const 268435455 - i32.gt_u - if - i32.const 1744 - i32.const 1488 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$149 - i32.const 1073741820 - local.get $4 - i32.const 1 - i32.shl - local.tee $4 - local.get $4 - i32.const 1073741820 - i32.ge_u - select - local.tee $4 - i32.const 8 - local.get $3 - local.get $3 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $3 - local.get $3 - local.get $4 - i32.lt_u - select - local.tee $5 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34984 + 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.load - local.tee $4 - i32.const 20 + i32.const 4 i32.sub - local.tee $7 - i32.load - i32.const -4 + local.set $2 + local.get $0 + i32.const 15 i32.and - i32.const 16 - i32.sub - i32.le_u + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end if - local.get $7 - local.get $5 - i32.store offset=16 - local.get $4 - local.set $3 - br $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - local.get $7 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $3 - local.get $4 - local.get $5 - local.get $7 - i32.load offset=16 - local.tee $7 - local.get $5 - local.get $7 - i32.lt_u - select - memory.copy - end - local.get $3 - local.get $4 - i32.ne - if - local.get $0 - local.get $3 + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $2 + call $~lib/rt/tlsf/insertBlock end - local.get $0 - local.get $5 - i32.store offset=8 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.get $0 - i32.store - local.get $0 - local.get $6 - i32.store offset=12 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 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 2216 - i32.lt_s - if - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1280 - i32.const 1488 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $start:infer-array (local $0 i32) @@ -2682,67 +2745,4 @@ call $~lib/builtins/abort unreachable ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - if - i32.const 35008 - i32.const 35056 - 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 - local.get $1 - i32.shl - local.tee $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $1 - local.get $3 - if - local.get $1 - local.get $3 - local.get $5 - memory.copy - end - 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 $5 - 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 - ) ) diff --git a/tests/compiler/infer-generic.release.wat b/tests/compiler/infer-generic.release.wat index 568ce764e2..788794869f 100644 --- a/tests/compiler/infer-generic.release.wat +++ b/tests/compiler/infer-generic.release.wat @@ -1,14 +1,14 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 f32 i32 i32) (result i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 f32 i32 i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param f32) (result f32))) - (type $9 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (type $9 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -51,61 +51,6 @@ (export "test5" (func $export:infer-generic/test2)) (export "inferAssert" (func $export:infer-generic/inferAssert)) (start $~start) - (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - f32.const 0 - f32.ne - i32.const 0 - local.get $0 - select - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1152 - call $~lib/rt/itcms/__visit - i32.const 1424 - call $~lib/rt/itcms/__visit - i32.const 1232 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -258,6 +203,51 @@ global.set $~lib/rt/itcms/visitCount 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -650,119 +640,217 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-generic/Ref + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + 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 1660 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + 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 1660 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1568 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1568 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -844,427 +932,200 @@ i32.const 34432 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1568 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1568 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34428 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 1424 + call $~lib/rt/itcms/__visit + i32.const 1232 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1296 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34428 - 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.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1232 + i32.const 1296 + i32.const 261 + 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$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34428 - i32.ge_u + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1568 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1232 - i32.const 1296 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 + global.get $~lib/rt/itcms/total i32.const 1 i32.shl i32.const 1024 @@ -1546,93 +1407,6 @@ memory.fill local.get $1 ) - (func $infer-generic/test1 (param $0 f32) (result f32) - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $infer-generic/Ref - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - 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 1660 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - 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 1660 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34448 - i32.const 34496 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~start (local $0 i32) (local $1 i32) @@ -1712,7 +1486,7 @@ i32.const 1152 i32.const 1200 i32.load - call_indirect (type $2) + call_indirect (type $4) local.set $0 local.get $1 i32.const 1 @@ -1840,50 +1614,276 @@ call $~lib/builtins/abort unreachable ) - (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - br_if $folding-inner0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34428 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1296 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34428 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34428 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + global.set $~lib/rt/itcms/state end - i32.const 34448 - i32.const 34496 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 + ) + (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + f32.const 0 + f32.ne + i32.const 0 + local.get $0 + select + ) + (func $infer-generic/test1 (param $0 f32) (result f32) + local.get $0 ) (func $export:infer-generic/inferAssert (param $0 i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/inlining-recursive.release.wat b/tests/compiler/inlining-recursive.release.wat index 79a6b7c99a..dc115bc899 100644 --- a/tests/compiler/inlining-recursive.release.wat +++ b/tests/compiler/inlining-recursive.release.wat @@ -5,10 +5,10 @@ (export "bar" (func $inlining-recursive/baz)) (export "baz" (func $inlining-recursive/baz)) (export "memory" (memory $0)) - (func $inlining-recursive/foo - call $inlining-recursive/foo - ) (func $inlining-recursive/baz call $inlining-recursive/baz ) + (func $inlining-recursive/foo + call $inlining-recursive/foo + ) ) diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat index be99a766a3..5ac8156f82 100644 --- a/tests/compiler/inlining.release.wat +++ b/tests/compiler/inlining.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func)) - (type $1 (func (result i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32) (result i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i32) (result f64))) (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64))) - (type $9 (func (param f64) (result f64))) + (type $8 (func (param f64) (result f64))) + (type $9 (func (param i32 i32 i64))) (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)) @@ -45,57 +45,6 @@ (export "bar" (func $inlining/bar)) (export "memory" (memory $0)) (start $~start) - (func $inlining/test (result i32) - i32.const 3 - ) - (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) - i32.const 2 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1328 - call $~lib/rt/itcms/__visit - i32.const 1136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -640,119 +589,319 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1472 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $inlining/Baz + block $inlining/Bar + block $inlining/Foo + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + 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 1556 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + 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.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + unreachable + ) + (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) + (local $3 f64) + (local $4 f64) local.get $0 - i32.load offset=1568 - local.tee $3 + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 2146435072 + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + local.get $0 + f64.add + return + end + local.get $1 + i32.const 1048576 + i32.lt_u + if (result i32) + local.get $0 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $1 + i32.eqz if - i32.const 0 - i32.const 1472 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + return end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.const 3 + i32.div_u + i32.const 696219795 i32.add + else local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add end + local.set $1 local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end + i64.const -9223372036854775808 + i64.and local.get $1 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + local.tee $4 + local.get $4 + f64.mul + local.get $4 + local.get $0 + f64.div + f64.mul + local.set $3 + local.get $0 local.get $4 - i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store + f64.const 1.6214297201053545 + f64.mul + f64.const -1.8849797954337717 + f64.add + f64.mul + f64.const 1.87595182427177 + f64.add + local.get $3 + local.get $3 + f64.mul + local.get $3 + f64.mul + local.get $3 + 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 $3 + local.get $0 local.get $0 local.get $3 - i32.store offset=1568 local.get $0 + f64.sub + local.get $0 + local.get $0 + f64.add + local.get $3 + f64.add + f64.div + f64.mul + f64.add + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -834,391 +983,162 @@ i32.const 34336 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34324 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1200 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34324 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34324 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1472 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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.const 20 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.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + call $~lib/rt/__visit_members local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1489,52 +1409,315 @@ i32.and i32.store end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 $1 + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~start + call $start:inlining + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34324 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34324 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end i32.const 0 - local.get $0 - memory.fill - local.get $1 ) (func $start:inlining (local $0 i32) @@ -1555,8 +1738,17 @@ i32.const 2 i32.const 1104 i32.load - call_indirect (type $2) + call_indirect (type $5) drop + i32.const 0 + if + i32.const 0 + i32.const 1056 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 123 i32.store @@ -1747,126 +1939,11 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.add - return - end - local.get $1 - i32.const 1048576 - i32.lt_u - if (result i32) - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - return - end - local.get $1 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - else - local.get $1 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add - end - local.set $1 - local.get $2 - i64.const -9223372036854775808 - i64.and - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $4 - local.get $4 - f64.mul - local.get $4 - local.get $0 - f64.div - f64.mul - local.set $3 - local.get $0 - local.get $4 - local.get $3 - local.get $3 - f64.const 1.6214297201053545 - f64.mul - f64.const -1.8849797954337717 - f64.add - f64.mul - f64.const 1.87595182427177 - f64.add - local.get $3 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.get $3 - 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 $3 - local.get $0 - local.get $0 - local.get $3 - local.get $0 - f64.sub - local.get $0 - local.get $0 - f64.add - local.get $3 - f64.add - f64.div - f64.mul - f64.add + (func $inlining/test (result i32) + i32.const 3 + ) + (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) + i32.const 2 ) (func $inlining/foo (param $0 i32) (param $1 i32) (param $2 i32) (result f64) local.get $0 @@ -1903,72 +1980,4 @@ f64.add f64.div ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $inlining/Baz - block $inlining/Bar - block $inlining/Foo - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - 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 1556 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - 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.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:inlining - ) ) diff --git a/tests/compiler/instanceof.release.wat b/tests/compiler/instanceof.release.wat index c6c53402ac..3605a2ca97 100644 --- a/tests/compiler/instanceof.release.wat +++ b/tests/compiler/instanceof.release.wat @@ -49,140 +49,65 @@ (data $9 (i32.const 1488) "\18\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\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $instanceof/a - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/b - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/an - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/child - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/childAsParent - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/animal - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/cat - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/blackcat - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullableAnimal - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullableCat - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullableBlackcat - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/w - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/x - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/y - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/z - local.tee $0 + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" (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 1588 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Y$78 (result i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 19 + i32.eq + br_if $is_instance + local.get $0 + i32.const 22 + i32.eq + br_if $is_instance i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + br $__inlined_func$~instanceof|instanceof/Y$78 end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + i32.const 1 end + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 12 + 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 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -336,1076 +261,635 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 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 $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if + memory.grow i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load - local.tee $3 - i32.const 1 + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.const 4 - i32.add + call $~lib/rt/tlsf/removeBlock local.get $1 i32.load + local.tee $3 i32.const -4 i32.and - i32.add + i32.const 28 + i32.sub local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.const 28 + i32.or i32.store local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.const 32 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $3 + local.get $4 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else local.get $1 - call $~lib/rt/tlsf/removeBlock + local.get $3 + i32.const -2 + i32.and + i32.store local.get $1 - local.get $6 i32.const 4 i32.add - local.get $3 + local.get $1 + i32.load i32.const -4 i32.and i32.add - local.tee $3 + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 - local.get $2 - i32.const 2 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white i32.or - i32.store - local.get $3 - i32.const -4 + 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 - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.or + i32.store offset=4 + local.get $0 local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $2 i32.add - i32.ne + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" (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 1588 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - i32.const 256 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 if (result i32) - local.get $2 - i32.const 4 - i32.shr_u + block $__inlined_func$~instanceof|instanceof/X$76 (result i32) + block $is_instance + block $tablify|0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 16 + i32.sub + br_table $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 + end + i32.const 0 + br $__inlined_func$~instanceof|instanceof/X$76 + end + i32.const 1 + end else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.const 0 end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and i32.eqz if i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 + i32.const 1456 + i32.const 12 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" (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 1588 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 + i32.store local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 22 + i32.eq + else + i32.const 0 + end + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 1456 + i32.const 12 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.const -16 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicFalse" (param $0 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + i32.const 34384 + i32.const 34432 + 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.store + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Y$82 (result i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 19 + i32.eq + br_if $is_instance + local.get $0 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Y$82 + end + i32.const 1 end else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 0 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + if + i32.const 0 + i32.const 1456 + i32.const 19 + 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 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s if - return + i32.const 34384 + i32.const 34432 + 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 0 + 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 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - local.get $4 - i32.const 2 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 8 - i32.sub + i32.const -4 + i32.and local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 + i32.load offset=96 + i32.eq + if local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34368 - i32.const 0 - i32.store - i32.const 35936 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34368 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34368 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34368 - i32.const 35940 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34368 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34356 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34356 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34356 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 i32.shl i32.add - global.set $~lib/rt/itcms/threshold + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end 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 + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 i32.eqz if - i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 $3 - i32.gt_s - select - memory.grow i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 i32.load - i32.const -4 + local.tee $3 + i32.const 1 i32.and - i32.const 28 - i32.lt_u + i32.eqz if i32.const 0 i32.const 1392 - i32.const 501 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.const 4 + i32.add local.get $1 i32.load - local.tee $3 i32.const -4 i32.and - i32.const 28 - i32.sub + i32.add local.tee $4 - i32.const 16 - i32.ge_u + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store + i32.add local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 + i32.const -4 i32.and + i32.add + local.tee $3 i32.store local.get $1 i32.const 4 @@ -1415,118 +899,273 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $4 i32.load - i32.const -3 + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 i32.and + i32.add + local.tee $3 i32.store end - local.get $1 + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=12 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or i32.store offset=4 local.get $1 - local.get $2 + local.get $3 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 + if + local.get $3 + local.get $1 + i32.store offset=4 + end local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add + i32.const 2 + i32.shl i32.add - global.set $~lib/rt/itcms/total local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill + i32.store offset=96 local.get $0 - ) - (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" (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 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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 + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - if (result i32) - block $__inlined_func$~instanceof|instanceof/X$76 (result i32) - block $is_instance - block $tablify|0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 16 - i32.sub - br_table $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $instanceof/IE + block $instanceof/Z + block $instanceof/IC + block $instanceof/ID + block $instanceof/Y + block $instanceof/IA + block $instanceof/IB + block $instanceof/X + block $instanceof/W + block $instanceof/BlackCat + block $instanceof/Cat + block $instanceof/Animal + block $instanceof/SomethingElse + block $instanceof/Parent + block $instanceof/Child + block $instanceof/Parent + block $instanceof/Child + block $instanceof/C + block $instanceof/B + block $instanceof/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return end - i32.const 0 - br $__inlined_func$~instanceof|instanceof/X$76 + return end - i32.const 1 + return end - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1456 - i32.const 12 - i32.const 5 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + unreachable ) - (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" (param $0 i32) + (func $"instanceof/assertDynamicFalse" (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1550,33 +1189,19 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Y$78 (result i32) - block $is_instance - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 19 - i32.eq - br_if $is_instance - local.get $0 - i32.const 22 - i32.eq - br_if $is_instance - i32.const 0 - br $__inlined_func$~instanceof|instanceof/Y$78 - end - i32.const 1 - end + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 22 + i32.eq else i32.const 0 end - i32.eqz if i32.const 0 i32.const 1456 - i32.const 12 + i32.const 19 i32.const 5 call $~lib/builtins/abort unreachable @@ -1586,9 +1211,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" (param $0 i32) + (func $instanceof/Cat#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1603,39 +1228,76 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.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 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $instanceof/Animal#constructor + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - if (result i32) - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 22 - i32.eq - else - i32.const 0 + ) + (func $instanceof/Animal#constructor (param $0 i32) (result 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 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + 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.eqz if - i32.const 0 - i32.const 1456 + global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $"instanceof/assertDynamicFalse" (param $0 i32) + (func $instanceof/A#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1650,225 +1312,418 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.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.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/object/Object#constructor + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 if (result i32) - block $__inlined_func$~instanceof|instanceof/Y$82 (result i32) - block $is_instance - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 19 - i32.eq - br_if $is_instance - local.get $0 - i32.const 22 - i32.eq - br_if $is_instance + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if i32.const 0 - br $__inlined_func$~instanceof|instanceof/Y$82 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - i32.const 1 + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else i32.const 0 end + if + unreachable + end + i32.const 34368 + i32.const 0 + i32.store + i32.const 35936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34368 + i32.const 35940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34368 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 - i32.const 1456 - i32.const 19 - i32.const 5 + i32.const 1392 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"instanceof/assertDynamicFalse" (param $0 i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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.store + local.set $1 local.get $0 - if (result i32) - local.get $0 - i32.const 8 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 i32.sub - i32.load - i32.const 22 + local.tee $5 i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - i32.const 0 + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1456 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $instanceof/IE - block $instanceof/Z - block $instanceof/IC - block $instanceof/ID - block $instanceof/Y - block $instanceof/IA - block $instanceof/IB - block $instanceof/X - block $instanceof/W - block $instanceof/BlackCat - block $instanceof/Cat - block $instanceof/Animal - block $instanceof/SomethingElse - block $instanceof/Parent - block $instanceof/Child - block $instanceof/Parent - block $instanceof/Child - block $instanceof/C - block $instanceof/B - block $instanceof/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $instanceof/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/an + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/child + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/childAsParent + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/animal + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/cat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end - unreachable - ) - (func $~start - call $start:instanceof - ) - (func $instanceof/A#constructor (param $0 i32) (result 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 1588 - i32.lt_s + global.get $instanceof/blackcat + local.tee $0 if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz + global.get $instanceof/nullableAnimal + local.tee $0 if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor + global.get $instanceof/nullableCat local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableBlackcat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/w + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/y + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/z + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) - (func $instanceof/Animal#constructor (param $0 i32) (result i32) + (func $instanceof/Y#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1891,7 +1746,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 19 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1901,7 +1756,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/object/Object#constructor + call $instanceof/X#constructor local.tee $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1910,7 +1765,7 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $instanceof/Cat#constructor (param $0 i32) (result i32) + (func $instanceof/X#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1933,7 +1788,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 13 + i32.const 16 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1943,7 +1798,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $instanceof/Animal#constructor + call $~lib/object/Object#constructor local.tee $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1991,89 +1846,268 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $instanceof/X#constructor (param $0 i32) (result 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 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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.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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + (func $~start + call $start:instanceof ) - (func $instanceof/Y#constructor (param $0 i32) (result 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 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 19 - call $~lib/rt/itcms/__new + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.store + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34356 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34356 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $instanceof/X#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) (func $start:instanceof (local $0 i32) @@ -3555,38 +3589,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#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 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - 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 0 - 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 - ) ) diff --git a/tests/compiler/issues/1095.release.wat b/tests/compiler/issues/1095.release.wat index f79ddedb7a..542118d3ea 100644 --- a/tests/compiler/issues/1095.release.wat +++ b/tests/compiler/issues/1095.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -38,183 +38,6 @@ (data $11 (i32.const 1648) "\05\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$117 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34440 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$117 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1648 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1652 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -631,585 +454,533 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 + i32.const 1120 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$117 local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34440 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$117 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 end - local.get $1 - local.get $4 + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1648 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1652 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - 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 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + 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/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/1095/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - unreachable - end - i32.const 34448 - i32.const 0 - i32.store - i32.const 36016 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl - i32.const 34448 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34448 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $1 end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - i32.const 34448 - i32.const 36020 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34448 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -4 - i32.and - i32.eq + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34440 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/visitCount - return + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34448 + i32.const 0 + i32.store + i32.const 36016 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34440 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34440 - i32.ge_u + i32.const 2 + i32.shl + i32.const 34448 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34448 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.add + local.set $1 + br $for-loop|1 end end - i32.const 10 - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 + i32.const 34448 + i32.const 36020 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34448 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.const 256 - i32.lt_u + i64.extend_i32_u + i64.lt_u if - local.get $1 + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 i32.const 4 - i32.shr_u - local.set $1 - else + i32.add local.get $1 - i32.const 536870910 - i32.lt_u + i32.gt_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 + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $3 local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 i32.sub - local.set $2 + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.const 16 - i32.lt_u local.get $2 - i32.const 23 - i32.lt_u + i32.wrap_i64 + i32.const -16 i32.and - i32.eqz + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $0 - local.get $2 + local.get $1 + local.get $4 i32.const 2 - i32.shl + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 i32.add - i32.load offset=4 - i32.const -1 + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 - i32.shl - i32.and + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - if (result i32) + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1536,247 +1307,476 @@ local.get $0 i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 + i32.const 0 + i32.const 1120 + i32.const 295 + 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 + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1672 + 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 34440 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1672 + 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 0 + i32.const 0 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1456 + call $issues/1095/Foo#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + 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.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store offset=12 + local.get $1 + i32.eqz + if + i32.const 1488 + i32.const 1616 + i32.const 8 + i32.const 13 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.store offset=4 + local.get $0 + local.get $1 + call $issues/1095/Foo#set:bar + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34464 + i32.const 34512 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34440 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - i32.const 20 - i32.sub i32.load offset=4 - i32.const 3 + local.tee $1 + i32.const -4 i32.and - local.tee $0 + global.set $~lib/rt/itcms/iter global.get $~lib/rt/itcms/white i32.eqz - i32.eq + local.get $1 + i32.const 3 + i32.and + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34440 + 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/state - i32.const 1 - i32.eq + global.get $~lib/rt/itcms/total local.get $0 - i32.const 3 - i32.eq + i32.load + i32.const -4 i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34440 + i32.ge_u if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/1095/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid - end - return + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - return + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.const 10 return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1672 - 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 34440 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1672 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - 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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1672 - 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 0 - i32.const 0 - 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 - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $0 - i32.const 1456 - call $issues/1095/Foo#set:bar - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1672 - i32.lt_s - br_if $folding-inner0 - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $1 - i32.store offset=12 - local.get $1 - i32.eqz - if - i32.const 1488 - i32.const 1616 - i32.const 8 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $issues/1095/Foo#set:bar - 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 0 + global.set $~lib/rt/itcms/state end - i32.const 34464 - i32.const 34512 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 ) ) diff --git a/tests/compiler/issues/1225.release.wat b/tests/compiler/issues/1225.release.wat index 4619ad6ae6..3a9ede7e7b 100644 --- a/tests/compiler/issues/1225.release.wat +++ b/tests/compiler/issues/1225.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) (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)) @@ -37,57 +37,6 @@ (export "viaThis" (func $issues/1225/viaThis)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $issues/1225/x - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -240,216 +189,476 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 + local.set $0 + loop $while-continue|1 local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34280 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34280 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if i32.const 0 i32.const 1392 - i32.const 201 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 + local.get $3 + i32.const -4 i32.and - i32.eqz + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and i32.add local.tee $4 i32.load @@ -632,119 +841,90 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (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 + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -826,322 +1006,389 @@ i32.const 34288 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + global.get $issues/1225/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34280 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 - i32.and i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34280 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34280 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $issues/1225/viaThis (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 1512 + i32.lt_s + if + i32.const 34304 + i32.const 34352 + 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 + global.get $issues/1225/x + local.tee $0 + i32.store local.get $0 i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $issues/1225/normal (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 1512 + i32.lt_s + if + i32.const 34304 + i32.const 34352 + 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 + global.get $issues/1225/x + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 34280 + 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 + 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 1512 + i32.lt_s + if + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $issues/1225/x + call $issues/1225/normal + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $issues/1225/viaThis + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $issues/1225/x + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|0 end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 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 ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) @@ -1373,251 +1620,4 @@ memory.fill local.get $0 ) - (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 - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - memory.size - i32.const 16 - i32.shl - i32.const 34280 - 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 - 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 1512 - i32.lt_s - if - i32.const 34304 - i32.const 34352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $issues/1225/x - call $issues/1225/normal - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $issues/1225/viaThis - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $issues/1225/x - 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 - ) - (func $issues/1225/normal (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 1512 - i32.lt_s - if - i32.const 34304 - i32.const 34352 - 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 - global.get $issues/1225/x - local.tee $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $issues/1225/viaThis (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 1512 - i32.lt_s - if - i32.const 34304 - i32.const 34352 - 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 - global.get $issues/1225/x - local.tee $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 - ) ) diff --git a/tests/compiler/issues/1699.release.wat b/tests/compiler/issues/1699.release.wat index eb9e11fbf9..5da543848f 100644 --- a/tests/compiler/issues/1699.release.wat +++ b/tests/compiler/issues/1699.release.wat @@ -2,9 +2,9 @@ (type $0 (func)) (type $1 (func (param i32))) (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32 i32))) + (type $3 (func (param i32 i32 i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -41,187 +41,6 @@ (data $12 (i32.const 1712) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1344 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1552 - call $~lib/rt/itcms/__visit - i32.const 1152 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1216 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$146 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34508 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$146 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1712 - i32.load - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1716 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -246,1854 +65,2143 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 268 - i32.const 14 + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1152 i32.const 1488 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1488 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1488 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + 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 - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/array/Array#__get (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 + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 234 - i32.const 14 + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 251 - i32.const 14 + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store + local.tee $0 + i32.store offset=4 local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.eqz + if + i32.const 1552 + i32.const 1104 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $0 + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz + if + return + end + local.get $0 + i32.eqz if i32.const 0 - i32.const 1488 - i32.const 382 + i32.const 1216 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/itcms/white local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 + i32.const 20 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 + local.get $0 + i32.const 20 i32.sub - local.tee $5 + 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 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.sub + i32.load local.tee $3 - i32.const 20 - i32.lt_u + i32.const 1 + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 + local.get $3 + i32.const -4 i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 8 - i32.sub + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 34512 - i32.const 0 - i32.store - i32.const 36080 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34512 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34512 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34512 - i32.const 36084 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34512 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34508 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34508 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34508 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1488 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1488 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 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 + local.get $1 + i32.eqz if - i32.const 1152 - i32.const 1216 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1152 + i32.const 0 i32.const 1488 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load local.tee $2 - i32.eqz + i32.const 1 + i32.and if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 + local.get $0 local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and i32.eqz if i32.const 0 i32.const 1488 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1488 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1488 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 i32.const 4 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$146 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34508 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$146 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store + i32.store offset=8 local.get $2 - i32.const 4 - i32.add + local.get $1 local.get $2 - i32.load - i32.const -4 + 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=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1712 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1716 i32.add - local.tee $3 - local.get $3 i32.load - i32.const -3 + i32.const 32 i32.and - i32.store end - local.get $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 $1 - i32.load offset=8 local.set $3 local.get $2 - local.get $1 + i32.load offset=8 + local.set $1 + local.get $0 global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 i32.or i32.store offset=4 - local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 + 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 $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 $1 - i32.const 0 local.get $0 - memory.fill - local.get $1 + i32.store offset=8 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if + block $invalid + block $~lib/array/Array + block $issues/1699/MultiAssignmentTest + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + 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 1740 + i32.lt_s + if + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1216 - i32.const 295 - 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 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $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 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 - i32.eq - i32.and + i32.lt_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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 - end - ) - (func $start:issues/1699 - (local $0 i32) - (local $1 i32) - (local $2 i32) - memory.size - i32.const 16 - i32.shl - i32.const 34508 - 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 + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1740 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 28 - memory.fill - global.get $~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 1740 - i32.lt_s - br_if $folding-inner1 - 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 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 i32.store + local.get $1 local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 + 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 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $7 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $5 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$145 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $4 + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $6 + local.get $0 + i32.load + local.tee $3 + 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 $6 + i32.store offset=16 + local.get $3 + local.set $4 + br $__inlined_func$~lib/rt/itcms/__renew$145 + end + local.get $6 + local.get $5 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $4 + local.get $3 + local.get $6 + local.get $5 + i32.load offset=16 + local.tee $5 + local.get $5 + local.get $6 + i32.gt_u + select + memory.copy + end + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $4 + i32.store + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + 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.get $0 + i32.store + local.get $0 + local.get $7 + i32.store offset=12 + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.store local.get $0 - i32.store offset=4 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 + local.get $2 i32.const 1 - call $~lib/rt/itcms/__new + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $0 - local.get $2 - i32.store - local.get $0 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 32 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - call $issues/1699/MultiAssignmentTest#constructor - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.const 1 + i32.load + i32.const -1 local.get $2 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 i32.const 1 - call $~lib/array/Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $2 - call $~lib/array/Array#__set - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34512 + i32.const 0 + i32.store + i32.const 36080 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - i32.load offset=12 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 2 + i32.shl + i32.const 34512 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - call $issues/1699/MultiAssignmentTest#constructor - local.tee $2 - i32.store offset=24 + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - i32.const 1 - i32.gt_s + i32.const 16 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 local.get $0 + i32.const 4 + i32.shl local.get $1 - local.get $2 - call $~lib/array/Array#__set + i32.add + i32.const 2 + i32.shl + i32.const 34512 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 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 $0 - i32.store offset=4 - local.get $0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34512 + i32.const 36084 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34512 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if i32.const 0 - call $~lib/array/Array#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array#__get + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add local.get $1 - i32.ne + i32.gt_u if i32.const 0 - i32.const 1680 - i32.const 15 - i32.const 3 + i32.const 1488 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array#__get + local.get $3 local.get $1 + i32.const 16 + i32.sub + local.tee $5 i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u if i32.const 0 - i32.const 1680 - i32.const 16 - i32.const 3 + i32.const 1488 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.add - global.set $~lib/memory/__stack_pointer + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if return end - i32.const 34528 - i32.const 34576 - i32.const 1 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - block $invalid - block $~lib/array/Array - block $issues/1699/MultiAssignmentTest - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + end + ) + (func $issues/1699/MultiAssignmentTest#constructor (result i32) + (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 1740 i32.lt_s - if - i32.const 34528 - i32.const 34576 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + 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 0 + i32.const 0 + 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 - local.get $0 - i32.load offset=4 - local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=12 i32.const 2 - i32.shl + i32.store + 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 $0 + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:issues/1699 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34508 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - local.get $2 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34508 i32.lt_u if - local.get $1 + 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 - local.tee $3 + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34508 + i32.ge_u if - local.get $3 - call $~lib/rt/itcms/__visit + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - unreachable - ) - (func $~start - call $start:issues/1699 + i32.const 0 ) - (func $issues/1699/MultiAssignmentTest#constructor (result i32) + (func $start:issues/1699 (local $0 i32) (local $1 i32) + (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 34508 + 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.const 28 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1740 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~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 1740 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 call $~lib/rt/itcms/__new local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - br_if $folding-inner0 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.store + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end + 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=12 local.get $0 + local.get $2 i32.store + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 2 - i32.store + 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 $0 - return - end - i32.const 34528 - i32.const 34576 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + i32.store offset=4 + local.get $0 + i32.const 32 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - br_if $folding-inner0 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer 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 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.tee $6 - local.set $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + call $issues/1699/MultiAssignmentTest#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + i32.const 1 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $2 + call $~lib/array/Array#__set + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2101,143 +2209,98 @@ global.get $~lib/memory/__stack_pointer i32.const 1740 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $3 local.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u + i32.load offset=12 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.lt_s if - local.get $3 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$145 - i32.const 1073741820 - local.get $4 - i32.const 1 - i32.shl - local.tee $4 - local.get $4 - i32.const 1073741820 - i32.ge_u - select - local.tee $4 - i32.const 8 - local.get $3 - local.get $3 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $3 - local.get $3 - local.get $4 - i32.lt_u - select - local.tee $5 - local.get $0 - i32.load - local.tee $4 - i32.const 20 - i32.sub - local.tee $7 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $7 - local.get $5 - i32.store offset=16 - local.get $4 - local.set $3 - br $__inlined_func$~lib/rt/itcms/__renew$145 - end - local.get $5 - local.get $7 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $3 - local.get $4 - local.get $5 - local.get $7 - i32.load offset=16 - local.tee $7 - local.get $5 - local.get $7 - i32.lt_u - select - memory.copy - end - local.get $3 - local.get $4 - i32.ne + call $issues/1699/MultiAssignmentTest#constructor + local.tee $2 + i32.store offset=24 + local.get $1 + i32.const 1 + i32.gt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $3 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + call $~lib/array/Array#__set end - local.get $0 - local.get $5 - i32.store offset=8 + 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $6 - i32.store offset=12 end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 + i32.const 0 + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get local.get $1 + i32.ne + if + i32.const 0 + i32.const 1680 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - local.get $2 i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/array/Array#__get + local.get $1 + 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 4 + i32.const 28 i32.add global.set $~lib/memory/__stack_pointer return @@ -2249,67 +2312,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array#__get (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 - global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - if - i32.const 34528 - i32.const 34576 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $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 114 - i32.const 42 - 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 $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 1552 - i32.const 1104 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/issues/1714.release.wat b/tests/compiler/issues/1714.release.wat index 5fc4c4ca7e..7645fdba1b 100644 --- a/tests/compiler/issues/1714.release.wat +++ b/tests/compiler/issues/1714.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) + (type $0 (func)) + (type $1 (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 33884)) (memory $0 1) diff --git a/tests/compiler/issues/2166.release.wat b/tests/compiler/issues/2166.release.wat index 62cde8edc5..fa61a80944 100644 --- a/tests/compiler/issues/2166.release.wat +++ b/tests/compiler/issues/2166.release.wat @@ -4,9 +4,9 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -43,50 +43,167 @@ (data $13 (i32.const 1632) "\06\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/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + if + i32.const 34448 + i32.const 34496 + 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 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$79 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$79 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -632,158 +749,362 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (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 $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + 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 $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.load + i32.const -4 + i32.and + i32.const 28 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $2 local.get $1 - local.get $4 - i32.const 2 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 i32.and - local.get $3 - i32.const 8 + i32.const 28 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + 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 $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 local.get $1 i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 local.get $1 - i32.const 0 + 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 $0 + local.get $1 i32.store offset=8 + global.get $~lib/rt/itcms/total local.get $1 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + global.set $~lib/rt/itcms/total local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34432 + i32.const 20 + i32.add + local.tee $0 i32.const 0 - i32.store - i32.const 36000 i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34432 - i32.add - i32.const 0 - i32.store offset=4 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2166/Test2166Ref2 + block $issues/2166/Test2166Ref1<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34432 + i32.const 0 + i32.store + i32.const 36000 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34432 + i32.add + i32.const 0 + i32.store offset=4 i32.const 0 local.set $1 loop $for-loop|1 @@ -826,586 +1147,167 @@ i32.const 34432 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34428 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34428 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34428 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - 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 $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/2166/Test2166Ref2 - block $issues/2166/Test2166Ref1<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) + (func $~start + (local $0 i32) (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -1594,179 +1496,277 @@ 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 34448 - i32.const 34496 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - if - i32.const 34448 - i32.const 34496 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34428 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$79 - loop $while-continue|1 + local.get $0 + i32.const 34428 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34428 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$79 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) ) diff --git a/tests/compiler/issues/2322/index.release.wat b/tests/compiler/issues/2322/index.release.wat index 4128d19d5c..cf2df6b497 100644 --- a/tests/compiler/issues/2322/index.release.wat +++ b/tests/compiler/issues/2322/index.release.wat @@ -33,51 +33,6 @@ (export "test" (func $issues/2322/index/test)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -622,150 +577,192 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2322/lib/Wrapper + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.and local.tee $1 - i32.const 0 - i32.le_s if (result i32) - i32.const 1 + local.get $0 local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - i32.const 0 - end - if - unreachable - end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 local.get $0 - i32.const 23 - i32.lt_u + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if local.get $0 i32.const 2 @@ -816,391 +813,162 @@ i32.const 34240 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34232 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34232 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34232 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + br $while-continue|0 end end ) @@ -1518,67 +1286,299 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/2322/lib/Wrapper - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34232 + 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 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - return + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - return end - return + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34232 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34232 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 return end - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34232 - 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 ) (func $issues/2322/index/test (local $0 i32) diff --git a/tests/compiler/issues/2622.release.wat b/tests/compiler/issues/2622.release.wat index 047af1aebe..2cb8d68623 100644 --- a/tests/compiler/issues/2622.release.wat +++ b/tests/compiler/issues/2622.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) @@ -36,87 +36,6 @@ (data $8 (i32.const 1440) "\06\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $issues/2622/a - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/b - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $issues/2622/_a/t1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/_a/t1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/_b/t2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/_b/t2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -661,119 +580,323 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (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 $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $3 + 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 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + 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 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - else - local.get $0 - i32.const 1572 - i32.add + local.get $2 local.get $1 - i32.gt_u + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.load + i32.const -4 + i32.and + i32.const 28 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $2 local.get $1 - local.get $4 - i32.const 2 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 i32.and - local.get $3 - i32.const 8 + i32.const 28 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + 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 $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 local.get $1 i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 local.get $1 - i32.const 0 + 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 $0 + local.get $1 i32.store offset=8 + global.get $~lib/rt/itcms/total local.get $1 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill local.get $0 - local.get $3 - i32.store offset=1568 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2622/_b/T2 + block $issues/2622/_a/T1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -855,593 +978,244 @@ i32.const 34240 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34236 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $issues/2622/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $issues/2622/_a/t1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_a/t1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34236 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34236 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__visit_members local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + (func $~lib/object/Object#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 1468 + i32.lt_s if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 i32.eqz if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - local.get $2 - i32.load offset=1568 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + (local $0 i32) + block $__inlined_func$start:issues/2622$1 memory.size - local.tee $1 i32.const 16 i32.shl - i32.const 4 + i32.const 34236 i32.sub - 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 $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - 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 $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/2622/_b/T2 - block $issues/2622/_a/T1 - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - block $__inlined_func$start:issues/2622$1 - memory.size - i32.const 16 - i32.shl - i32.const 34236 - i32.sub - i32.const 1 + i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold i32.const 1172 @@ -1543,38 +1317,264 @@ unreachable end ) - (func $~lib/object/Object#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 1468 - i32.lt_s - if - i32.const 34256 - i32.const 34304 - 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 0 - call $~lib/rt/itcms/__new + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.store + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34236 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34236 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/issues/2707.release.wat b/tests/compiler/issues/2707.release.wat index 607bfb186c..4857753a2a 100644 --- a/tests/compiler/issues/2707.release.wat +++ b/tests/compiler/issues/2707.release.wat @@ -1,7 +1,7 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32))) + (type $1 (func (param i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -38,186 +38,6 @@ (elem $0 (i32.const 1) $start:issues/2707~anonymous|0) (export "memory" (memory $0)) (start $~start) - (func $start:issues/2707~anonymous|0 (param $0 i32) (result i32) - i32.const 1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1328 - call $~lib/rt/itcms/__visit - i32.const 1136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1200 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$119 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34316 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$119 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - 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 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1524 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -634,163 +454,319 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1472 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1472 - i32.const 389 - i32.const 16 + i32.const 1200 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - i32.const 0 - i32.const 1472 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34316 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + 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 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + 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 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and end - local.get $1 - local.get $4 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - 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 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + 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/tlsf/initialize - (local $0 i32) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/function/Function<%28~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + 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 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + 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.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 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) - memory.size + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.tee $1 - i32.const 0 - i32.le_s if (result i32) - i32.const 1 + local.get $0 local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - i32.const 0 - end - if - unreachable - end - i32.const 34320 - i32.const 0 - i32.store - i32.const 35888 - i32.const 0 - i32.store - loop $for-loop|0 local.get $0 - i32.const 23 - i32.lt_u - if + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz + local.tee $1 i32.const 2 i32.shl - i32.const 34320 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 i32.lt_u if local.get $0 @@ -828,320 +804,162 @@ i32.const 34320 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1200 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34316 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34316 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34316 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1472 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + br $while-continue|0 end end ) @@ -1316,304 +1134,486 @@ local.get $1 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i64.const 0 + i64.store align=1 + local.get $0 + i64.const 0 + i64.store offset=8 align=1 + local.get $0 + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34316 + 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 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 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1088 + i32.const 16 + memory.copy + local.get $0 + i32.store + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + i32.store + local.get $0 + if + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + 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 $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $3 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.const 16 + i32.store offset=8 + local.get $2 + i32.const 4 + 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 $2 - i32.load - i32.const -3 - i32.and i32.store + local.get $2 + i32.const 1056 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i64.const 0 - i64.store align=1 - local.get $0 - i64.const 0 - i64.store offset=8 align=1 - local.get $0 + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/function/Function<%28~lib/array/Array%29=>i32> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid - end - return - end - return - end + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + 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 1548 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34316 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - i32.store + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state 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 1548 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/visitCount return end - unreachable - end - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - 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 - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34316 - 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 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 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/rt/itcms/__new + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 1088 - i32.const 16 - memory.copy - local.get $0 - i32.store - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 - i32.store - local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $2 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1200 - i32.const 295 - i32.const 14 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white local.get $0 - i32.const 20 - i32.sub - local.tee $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.const 34316 + i32.lt_u if - local.get $2 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 + 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 - local.tee $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34316 + i32.ge_u if - local.get $3 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $1 - i32.const 3 - i32.eq + 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 $2 + local.get $0 + i32.const 15 i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end if - local.get $3 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end + i32.const 10 + return end - local.get $2 - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $2 - i32.const 16 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=8 - local.get $2 - i32.const 4 - 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 $2 - i32.store - local.get $2 - i32.const 1056 - i32.load - call_indirect (type $0) - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 0 + global.set $~lib/rt/itcms/state end - i32.const 34336 - i32.const 34384 - i32.const 1 + i32.const 0 + ) + (func $start:issues/2707~anonymous|0 (param $0 i32) (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable ) ) diff --git a/tests/compiler/issues/2825.release.wat b/tests/compiler/issues/2825.release.wat index c11fb2dae0..a03d3b82f6 100644 --- a/tests/compiler/issues/2825.release.wat +++ b/tests/compiler/issues/2825.release.wat @@ -8,12 +8,6 @@ (export "init" (func $issues/2825/init)) (export "memory" (memory $0)) (start $~start) - (func $issues/2825/init - loop $for-loop|0 - br $for-loop|0 - end - unreachable - ) (func $~start (local $0 i32) loop $for-loop|0 @@ -40,4 +34,10 @@ end end ) + (func $issues/2825/init + loop $for-loop|0 + br $for-loop|0 + end + unreachable + ) ) diff --git a/tests/compiler/issues/2873.release.wat b/tests/compiler/issues/2873.release.wat index c4ea92c08e..82a92f5c23 100644 --- a/tests/compiler/issues/2873.release.wat +++ b/tests/compiler/issues/2873.release.wat @@ -1,20 +1,20 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32) (result i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i64 i64 i32 i64 i32) (result i32))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 f64 i32) (result i32))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64))) - (type $10 (func (result i32))) - (type $11 (func (param i32) (result i32))) - (type $12 (func (param i32 f32) (result i32))) - (type $13 (func (param i32 f64) (result i32))) - (type $14 (func (param f32) (result i32))) - (type $15 (func (param f64) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 f64 i32) (result i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 f64) (result i32))) + (type $9 (func (param i32 f32) (result i32))) + (type $10 (func (param f64) (result i32))) + (type $11 (func (param f32) (result i32))) + (type $12 (func (param i32 i32 i64))) + (type $13 (func (param i32 i32 i32) (result i32))) + (type $14 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $15 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -77,938 +77,547 @@ (data $26 (i32.const 3344) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\02\1a") (export "memory" (memory $0)) (start $~start) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $2 - local.get $1 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $3 + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 $10 - i64.extend_i32_s local.tee $1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - local.tee $11 - local.get $2 - i64.and - local.set $8 - local.get $2 - local.get $1 - i64.shr_u - i32.wrap_i64 - 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.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 2656 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$138 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36140 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 2656 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$138 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 2656 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add + i32.and + i32.or + i32.store offset=4 end - else - local.get $3 - i32.const 10000000 - i32.lt_u + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + i32.const 1 else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u + local.get $0 + i32.const 3344 + i32.load + i32.gt_u + if + i32.const 2784 + i32.const 2848 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3348 i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - 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 $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 + ) + (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 2592 + i32.const 2656 + i32.const 261 + 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$72 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$72 end + local.get $1 i32.const 0 - local.set $6 + i32.gt_s + br_if $do-loop|0 end - local.get $5 - local.get $6 - i32.or - if - local.get $0 - local.get $5 + 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 + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 2592 + i32.const 2928 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub i32.shl i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 i32.const 1 - i32.add - local.set $5 + i32.sub + else + local.get $4 end - local.get $7 - i32.const 1 - i32.sub - local.set $7 + else local.get $4 - local.get $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $2 - i64.shl - local.get $8 - i64.add - local.tee $1 - i64.ge_u + end + i32.const 4 + local.get $3 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 2128 - i32.add - i64.load32_u - local.get $2 - i64.shl - local.set $2 - local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $1 - local.get $9 - i64.lt_u - local.get $4 - local.get $1 - i64.sub - local.get $2 - i64.ge_u - i32.and - if (result i32) - local.get $9 - local.get $1 - local.get $2 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $1 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $2 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 - return + unreachable end - br $while-continue|0 end - end - loop $while-continue|4 + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $8 - i64.const 10 - i64.mul + call $~lib/rt/tlsf/searchBlock local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + i32.eqz if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - 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 + i32.const 0 + i32.const 2928 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $11 - i64.and - local.tee $8 - local.get $4 - i64.ge_u - br_if $while-continue|4 end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 2128 + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 2928 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $0 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 2928 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $5 - i32.const 1 + i32.const -4 + i32.and + local.get $4 i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|6 + local.tee $2 + i32.const 16 + i32.ge_u + if local.get $1 - local.get $8 - i64.gt_u local.get $4 - local.get $8 - i64.sub - local.get $12 - i64.ge_u + local.get $5 + i32.const 2 i32.and - if (result i32) - local.get $1 - local.get $8 - local.get $12 - i64.add - local.tee $2 - i64.gt_u - local.get $1 - local.get $8 - i64.sub - local.get $2 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $8 - local.get $12 - i64.add - local.set $8 - br $while-continue|6 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 + i32.or + i32.store 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 2168 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2168 - 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.const 4 i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2168 + local.get $4 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.tee $4 local.get $2 - i32.const 2 + i32.const 4 i32.sub i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 2168 - i32.add - i32.load + i32.or i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock 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.get $2 - i32.eqz - if - local.get $0 + local.get $5 + i32.const -2 + i32.and + i32.store local.get $1 - i32.const 1 - i32.shl + i32.const 4 i32.add - i32.const 3145774 - i32.store local.get $1 - i32.const 2 + i32.load + i32.const -4 + i32.and i32.add - return + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store end local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 local.get $1 local.get $3 - i32.le_s + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - if (result i32) - 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 - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + local.get $1 + f64.const 0 + f64.lt + local.tee $4 + if local.get $0 - local.get $3 + i32.const 45 + i32.store16 + local.get $1 + f64.neg + local.set $1 + end + local.get $2 + if (result i64) + local.get $1 + f32.demote_f64 + i32.reinterpret_f32 + local.tee $8 + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.tee $9 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add + local.get $9 + select + i32.const 150 + i32.sub + local.set $5 + local.get $8 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.get $9 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + i64.add else + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.set $5 local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s - i32.and - 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 - 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 - local.get $3 - i32.const -6 - i32.gt_s - i32.and - 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 - 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 - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - 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 - 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 - 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 $3 - select - i32.store16 - 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 - 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 - i32.const 4 - i32.add - local.tee $4 - 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 - 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 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $1 - i32.const 2 - i32.add - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - local.get $1 - f64.const 0 - f64.lt - local.tee $4 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - local.set $1 - end - local.get $2 - if (result i64) - local.get $1 - f32.demote_f64 - i32.reinterpret_f32 - local.tee $8 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.tee $9 - i32.const 1 - local.get $9 - select - i32.const 150 - i32.sub - local.set $5 - local.get $8 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $9 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - else - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.set $5 - local.get $3 - i64.const 4503599627370495 - i64.and - local.get $8 + i64.const 4503599627370495 + i64.and + local.get $8 i32.const 0 i32.ne i64.extend_i32_u @@ -1129,11 +738,11 @@ i64.const 4294967295 i64.and local.set $14 - local.get $12 local.get $3 i64.const 32 i64.shr_u local.tee $7 + local.get $12 i64.mul local.get $12 local.get $14 @@ -1160,17 +769,17 @@ i64.shr_u i64.add local.set $12 + local.get $7 local.get $11 i64.const 32 i64.shr_u - local.tee $11 - local.get $7 + local.tee $7 i64.mul local.get $15 i64.const 32 i64.shr_u i64.add - local.get $11 + local.get $7 local.get $14 i64.mul local.get $15 @@ -1184,7 +793,7 @@ i64.add i64.const 1 i64.sub - local.set $7 + local.set $11 local.get $0 local.get $4 i32.const 1 @@ -1192,14 +801,14 @@ i32.add local.get $0 local.get $6 - local.get $11 + local.get $7 i64.mul local.get $13 i64.const 32 i64.shr_u i64.add + local.get $7 local.get $10 - local.get $11 i64.mul local.get $13 i64.const 4294967295 @@ -1210,14 +819,14 @@ i64.const 32 i64.shr_u i64.add - local.get $7 + local.get $11 global.get $~lib/util/number/_exp_pow global.get $~lib/util/number/_exp i32.add i32.const -64 i32.sub - local.get $7 local.get $11 + local.get $7 local.get $16 i64.mul local.get $12 @@ -1225,7 +834,7 @@ i64.shr_u i64.add local.get $3 - local.get $11 + local.get $7 i64.mul local.get $12 i64.const 4294967295 @@ -1248,206 +857,167 @@ local.get $4 i32.add ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 3104 - call $~lib/rt/itcms/__visit - i32.const 3312 - call $~lib/rt/itcms/__visit - i32.const 2784 - call $~lib/rt/itcms/__visit - i32.const 2592 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 2656 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 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 3372 + i32.lt_s if - return + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 2656 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$138 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 36140 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 2656 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$138 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 2656 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 3344 - i32.load - i32.gt_u - if - i32.const 2784 - i32.const 2848 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 3348 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + i32.store local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer 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/visitCount - i32.const 1 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$82 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$82 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - global.set $~lib/rt/itcms/visitCount + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -1810,490 +1380,575 @@ end local.get $0 local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 2928 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 2928 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 2928 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 + i32.const 4 + i32.shl + local.get $2 i32.add - local.tee $3 i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - local.get $3 - i32.store offset=1568 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 36144 - i32.const 0 - i32.store - i32.const 37712 - i32.const 0 - i32.store - loop $for-loop|0 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + 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.const 23 - i32.lt_u + call $~lib/array/Array~visit + return + end + unreachable + ) + (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 36144 + i32.const 2168 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36144 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2168 i32.add - local.set $0 - br $for-loop|0 + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - i32.const 36144 - i32.const 37716 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36144 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 + 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 2168 + 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 2168 + 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/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result 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 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + 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 - global.get $~lib/rt/itcms/toSpace - i32.ne + 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 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + else + local.get $1 + f64.const 0 + f64.lt + local.tee $2 if local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end + i32.const 45 + i32.store16 local.get $0 - i32.load offset=4 - i32.const -4 - i32.and + i32.const 2 + i32.add local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36140 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white + i64.const 29555310648492105 + i64.store local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.1 end - global.get $~lib/rt/itcms/visitCount - return + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $0 + local.get $1 + i32.const 0 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) + (local $2 f64) + (local $3 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $1 + f64.promote_f32 + local.tee $2 + f64.const 0 + f64.eq if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 2656 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + i32.const 48 + i32.store16 local.get $0 - i32.const 36140 - i32.lt_u + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $2 + local.get $2 + f64.sub + f64.const 0 + f64.ne + if + local.get $2 + local.get $2 + f64.ne 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36140 - i32.ge_u + 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 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $2 + f64.const 0 + f64.lt + local.tee $3 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 $2 local.get $0 - i32.const 15 - i32.and - i32.const 1 + i32.const 45 + i32.store16 local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 2928 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.const 2 + i32.add + local.set $0 end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 end - i32.const 10 - return + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + local.get $0 + local.get $2 + i32.const 1 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/number/dtoa (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 + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + 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 1056 + local.set $1 + block $~lib/util/number/dtoa_impl|inlined.1 + local.get $0 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.1 + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + i32.const 1088 + local.set $1 + local.get $0 + local.get $0 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.1 + i32.const 1120 + i32.const 1168 + local.get $0 + f64.const 0 + f64.lt + select + local.set $1 + br $~lib/util/number/dtoa_impl|inlined.1 + end + global.get $~lib/memory/__stack_pointer + i32.const 1200 + local.get $0 i32.const 0 - global.set $~lib/rt/itcms/state + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 1200 + local.get $2 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) + (local $1 f64) + (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 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + 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 1056 + local.set $2 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + i32.const 1088 + local.set $2 + local.get $1 + local.get $1 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 1120 + i32.const 1168 + local.get $1 + f64.const 0 + f64.lt + select + local.set $2 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1200 + local.get $1 + i32.const 1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 1200 + local.get $3 + memory.copy + end + 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) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3152 + return + end + local.get $3 + i32.eqz + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $3 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2395,495 +2050,275 @@ local.tee $1 i32.const 2 i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 2928 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (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 2592 - i32.const 2656 - i32.const 261 - 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$72 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$72 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $3 - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 2592 - i32.const 2928 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - local.get $4 - i32.const 256 - i32.ge_u - if (result i32) - local.get $4 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $4 - end - else - local.get $4 - end - i32.const 4 - local.get $3 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if + i32.const 0 + i32.const 2928 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end - local.get $3 + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $3 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36144 + i32.const 0 + i32.store + i32.const 37712 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if + local.get $0 + i32.const 2 + i32.shl + i32.const 36144 + i32.add i32.const 0 - i32.const 2928 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36144 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $4 + i32.const 36144 + i32.const 37716 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36144 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.load - i32.const -4 - i32.and - i32.gt_u + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 2928 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $5 - local.get $4 - i32.const 4 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 2928 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 + i32.const -16 i32.and - local.get $4 + i32.const 4 i32.sub - local.tee $2 - i32.const 16 - i32.ge_u + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $1 - local.get $4 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 + local.get $3 i32.const 4 i32.add - local.get $4 - i32.add - local.tee $4 - local.get $2 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $3 - local.get $4 - call $~lib/rt/tlsf/insertBlock - else local.get $1 - local.get $5 - i32.const -2 - i32.and - i32.store + i32.gt_u + if + i32.const 0 + i32.const 2928 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 local.get $1 - i32.const 4 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.gt_u + if + i32.const 0 + i32.const 2928 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.const 2 - i32.store offset=12 - local.get $1 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $3 - local.get $1 local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $2 local.get $1 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total local.get $1 - i32.load - i32.const -4 - i32.and i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) - (local $2 f64) - (local $3 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3104 + call $~lib/rt/itcms/__visit + i32.const 3312 + call $~lib/rt/itcms/__visit + i32.const 2784 + call $~lib/rt/itcms/__visit + i32.const 2592 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 local.get $1 - f64.promote_f32 - local.tee $2 - f64.const 0 - f64.eq + i32.ne 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.load offset=4 i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - local.get $2 - local.get $2 - f64.sub - f64.const 0 - f64.ne - if - local.get $2 - local.get $2 - f64.ne + i32.and + i32.const 3 + i32.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 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else - local.get $2 - f64.const 0 - f64.lt - local.tee $3 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $3 - i32.const 8 - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + i32.const 0 + i32.const 2656 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - unreachable - end - local.get $0 - local.get $2 - i32.const 1 - call $~lib/util/number/dtoa_core - end - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result 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 + i32.const 20 + i32.add + call $~lib/rt/__visit_members local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - 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 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - 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 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $2 - i32.const 8 - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - unreachable + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/util/number/dtoa_core end ) (func $~lib/array/Array~visit (param $0 i32) @@ -2907,49 +2342,14 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - 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 $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - 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 - call $~lib/array/Array~visit - return - end - unreachable + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~start (local $0 i32) @@ -3327,526 +2727,1124 @@ local.get $4 i32.lt_s if - local.get $1 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $5 + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 3184 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $5 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|01 + end + end + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.tee $0 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray$144 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3024 + i32.const 8 + 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.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 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 + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + 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 + 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 $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 + local.get $3 + i32.const 0 + i32.gt_s + i32.and + 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 + 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 + local.get $3 + i32.const -6 + i32.gt_s + i32.and + 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 + 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 local.get $0 - i32.const 1 - i32.shl + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 i32.add + local.tee $2 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 + 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 + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut local.get $2 - i32.const 3 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + 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 + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 i32.add - f64.load - call $~lib/util/number/dtoa_buffered + local.tee $0 + i32.const 101 + i32.store16 offset=2 local.get $0 + i32.const 4 i32.add - local.set $0 - local.get $5 + local.tee $4 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.const 3184 - local.get $5 - i32.const 1 - i32.shl - memory.copy + i32.const 0 local.get $0 - local.get $5 - i32.add + i32.sub local.set $0 end - local.get $2 + local.get $0 + 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 i32.const 1 i32.add - local.set $2 - br $for-loop|01 + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 end - end - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $0 - i32.add - local.tee $0 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$144 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 3216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 3024 - i32.const 8 - 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.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 2 + i32.add + 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 $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i64) + local.get $2 + local.get $1 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - 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 + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + local.tee $11 + local.get $2 + i64.and + local.set $8 + local.get $2 local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + 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 - local.tee $0 - i32.const 4 - i32.ge_u + i32.const 10000000 + i32.lt_u if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and + 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 + 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 $3 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100 + i32.div_u + local.set $6 + local.get $3 + i32.const 100 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10 + i32.div_u + local.set $6 + local.get $3 + i32.const 10 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + local.set $6 + i32.const 0 + local.set $3 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $5 + local.get $6 i32.or - else + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $6 + 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 - end - i32.eqz - if - loop $do-loop|0 + i32.sub + local.set $7 + local.get $4 + local.get $3 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $2 + i64.shl + local.get $8 + i64.add + local.tee $1 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 2128 + i32.add + i64.load32_u local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$82 - loop $while-continue|1 + i64.shl + local.set $2 local.get $0 - local.tee $3 + local.get $5 i32.const 1 i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|3 local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 + local.get $9 + i64.lt_u local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$82 - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + i64.sub + local.get $2 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $1 + local.get $2 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $1 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $2 + i64.add + local.set $1 + br $while-continue|3 + end end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + return end - i32.const 0 - local.set $3 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - i32.const 1 + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $8 + i64.const 10 + i64.mul + local.tee $1 + local.get $10 + i64.extend_i32_s + i64.shr_u + local.tee $2 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + 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 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $7 + local.get $1 + local.get $11 + i64.and + local.tee $8 + local.get $4 + i64.ge_u + br_if $while-continue|4 end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 0 - local.get $1 + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - i32.const 20 + local.get $7 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.le_s - select - i32.const 1 + i32.const 2 i32.shl - local.set $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.ge_s - select + i32.const 2128 + i32.add + i64.load32_u + i64.mul + local.set $1 + local.get $0 + local.get $5 i32.const 1 - i32.shl - local.tee $4 - local.get $3 i32.sub - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3152 - return - end - local.get $3 - i32.eqz - local.get $4 - local.get $1 i32.const 1 i32.shl - i32.eq - i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $3 - i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/dtoa (param $0 f32) (result i32) - (local $1 f64) - (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 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - 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 1056 - local.set $2 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $1 + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|6 local.get $1 - f64.sub - f64.const 0 - f64.ne - if - i32.const 1088 - local.set $2 + local.get $8 + i64.gt_u + local.get $4 + local.get $8 + i64.sub + local.get $12 + i64.ge_u + i32.and + if (result i32) local.get $1 + local.get $8 + local.get $12 + i64.add + local.tee $2 + i64.gt_u local.get $1 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 1120 - i32.const 1168 + local.get $8 + i64.sub + local.get $2 local.get $1 - f64.const 0 - f64.lt - select - local.set $2 - br $~lib/util/number/dtoa_impl|inlined.0 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $12 + i64.add + local.set $8 + br $while-continue|6 + end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36140 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return end - i32.const 1200 - local.get $1 - i32.const 1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 1200 - local.get $3 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/util/number/dtoa (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 - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - 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 1056 - local.set $1 - block $~lib/util/number/dtoa_impl|inlined.1 - local.get $0 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.1 - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 1088 - local.set $1 - local.get $0 local.get $0 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 1120 - i32.const 1168 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 2656 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $~lib/util/number/dtoa_impl|inlined.1 + i32.const 36140 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36140 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 2928 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - i32.const 1200 - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 1200 - local.get $2 - memory.copy + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 ) ) diff --git a/tests/compiler/logical.release.wat b/tests/compiler/logical.release.wat index 4b89f7fef8..7d72c4c009 100644 --- a/tests/compiler/logical.release.wat +++ b/tests/compiler/logical.release.wat @@ -44,63 +44,6 @@ (export "qux" (global $logical/qux)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $logical/b - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $logical/c - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -253,105 +196,335 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 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 $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1440 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + local.get $1 + i32.load + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1440 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.load offset=8 - local.set $5 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load offset=4 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub local.tee $4 + i32.const 16 + i32.ge_u if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 + 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 $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 i32.const 4 i32.shl local.get $3 @@ -645,119 +818,99 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $logical/C + block $logical/A + block $logical/B + block $logical/Obj + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -839,590 +992,292 @@ i32.const 34304 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34292 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $logical/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $logical/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1168 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34292 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34292 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + (func $~lib/object/Object#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 1524 + i32.lt_s if - call $~lib/rt/tlsf/initialize + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 i32.eqz if - i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 $3 - i32.gt_s - select - memory.grow + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $logical/Obj#constructor (result i32) + (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 1524 + i32.lt_s if - i32.const 0 - i32.const 1440 - i32.const 501 - i32.const 14 + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $logical/A#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub + i32.const 34320 + i32.const 34368 i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - 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.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 + 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 local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add + call $~lib/object/Object#constructor local.tee $0 - i32.const 0 - i32.const 0 - memory.fill + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $logical/C - block $logical/A - block $logical/B - block $logical/Obj - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) (func $~start (local $0 i32) block $__inlined_func$start:logical$1 @@ -1568,161 +1423,306 @@ local.get $0 global.get $logical/c local.get $0 - select + select + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $logical/b + local.tee $0 + i32.store + global.get $logical/c + global.get $logical/c + local.get $0 + local.get $0 + select + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 120 + 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:logical$1 + end + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34292 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and i32.ne if i32.const 0 - i32.const 1056 - i32.const 114 - i32.const 1 + i32.const 1168 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $logical/b - local.tee $0 - i32.store - global.get $logical/c - global.get $logical/c local.get $0 - local.get $0 - select - i32.ne + i32.const 34292 + i32.lt_u if + local.get $0 i32.const 0 - i32.const 1056 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34292 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:logical$1 + i32.const 10 + return end - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $logical/Obj#constructor (result i32) - (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 1524 - i32.lt_s - if - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $logical/A#constructor (param $0 i32) (result 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 1524 - i32.lt_s - if - i32.const 34320 - i32.const 34368 - 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.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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/object/Object#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 1524 - i32.lt_s - if - i32.const 34320 - i32.const 34368 - 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 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/loop-flow.release.wat b/tests/compiler/loop-flow.release.wat index f6a91f814e..808ecef87a 100644 --- a/tests/compiler/loop-flow.release.wat +++ b/tests/compiler/loop-flow.release.wat @@ -22,17 +22,12 @@ (export "doAny" (func $loop-flow/doAny)) (export "memory" (memory $0)) (start $~start) - (func $loop-flow/whileReturn (result i32) - i32.const 1 - ) (func $loop-flow/whileAny (param $0 i32) (result i32) loop $while-continue|0 (result i32) local.get $0 i32.const 1 - i32.eq - if (result i32) - i32.const 1 - else + i32.ne + if local.get $0 i32.const 2 i32.eq @@ -48,16 +43,17 @@ end unreachable end + i32.const 1 end + drop + i32.const 1 ) (func $loop-flow/forAny (param $0 i32) (result i32) loop $for-loop|0 (result i32) local.get $0 i32.const 1 - i32.eq - if (result i32) - i32.const 1 - else + i32.ne + if local.get $0 i32.const 2 i32.eq @@ -71,16 +67,17 @@ end br $for-loop|0 end + i32.const 1 end + drop + i32.const 1 ) (func $loop-flow/doAny (param $0 i32) (result i32) loop $do-loop|0 (result i32) local.get $0 i32.const 1 - i32.eq - if (result i32) - i32.const 1 - else + i32.ne + if local.get $0 i32.const 2 i32.eq @@ -94,7 +91,21 @@ end br $do-loop|0 end + i32.const 1 end + drop + i32.const 1 + ) + (func $~start + i32.const 1 + call $loop-flow/whileAny + drop + i32.const 1 + call $loop-flow/forAny + drop + i32.const 1 + call $loop-flow/doAny + drop ) (func $loop-flow/whileThrow (result i32) i32.const 1104 @@ -104,6 +115,9 @@ call $~lib/builtins/abort unreachable ) + (func $loop-flow/whileReturn (result i32) + i32.const 1 + ) (func $loop-flow/whileContinue (result i32) loop $while-continue|0 br $while-continue|0 @@ -126,15 +140,4 @@ call $~lib/builtins/abort unreachable ) - (func $~start - i32.const 1 - call $loop-flow/whileAny - drop - i32.const 1 - call $loop-flow/forAny - drop - i32.const 1 - call $loop-flow/doAny - drop - ) ) diff --git a/tests/compiler/loop-wrap.release.wat b/tests/compiler/loop-wrap.release.wat index aeb624f5ba..ccb4934d40 100644 --- a/tests/compiler/loop-wrap.release.wat +++ b/tests/compiler/loop-wrap.release.wat @@ -6,10 +6,11 @@ (export "testFirstWrapped" (func $loop-wrap/testFirstWrapped)) (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) (export "memory" (memory $0)) - (func $loop-wrap/testAlwaysWrapped - (local $0 i32) + (func $loop-wrap/testSubsequentWrapped (param $0 i32) loop $do-loop|0 local.get $0 + i32.const 255 + i32.and i32.const 10 i32.ne if @@ -42,11 +43,10 @@ end end ) - (func $loop-wrap/testSubsequentWrapped (param $0 i32) + (func $loop-wrap/testAlwaysWrapped + (local $0 i32) loop $do-loop|0 local.get $0 - i32.const 255 - i32.and i32.const 10 i32.ne if diff --git a/tests/compiler/managed-cast.release.wat b/tests/compiler/managed-cast.release.wat index 9bffd1f543..99e4fafa6f 100644 --- a/tests/compiler/managed-cast.release.wat +++ b/tests/compiler/managed-cast.release.wat @@ -1,8 +1,8 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (result i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -38,125 +38,435 @@ (data $11 (i32.const 1696) "\06\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/visitRoots + (func $managed-cast/Cat#constructor (result i32) (local $0 i32) (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + (local $2 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 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.ne + 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 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + 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 0 + 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 8 + i32.add + global.set $~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 + local.get $0 + return end + i32.const 34512 + i32.const 34560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/__visit (param $0 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$137 - local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34492 - i32.lt_u - i32.and - i32.eqz + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$137 end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34492 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34492 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34492 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$137 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34492 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$137 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort unreachable end local.get $0 @@ -622,521 +932,10 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34496 - i32.const 0 - i32.store - i32.const 36064 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34496 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34496 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34496 - i32.const 36068 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34496 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34492 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34492 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34492 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) @@ -1253,151 +1052,480 @@ end end local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + 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 $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $managed-cast/Animal + block $managed-cast/Cat + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34496 + i32.const 0 + i32.store + i32.const 36064 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34496 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34496 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34496 + i32.const 36068 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34496 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load - local.tee $3 - i32.const -4 + i32.const 19 + i32.add + i32.const -16 i32.and - i32.const 28 + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $1 local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - 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 + i32.add local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const -2 - i32.and - i32.store local.get $1 - i32.const 4 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $0 local.get $1 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total local.get $1 - i32.load - i32.const -4 - i32.and i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $managed-cast/Animal - block $managed-cast/Cat - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - return end - unreachable + ) + (func $managed-cast/testUpcastToNullable (param $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 1724 + i32.lt_s + if + i32.const 34512 + i32.const 34560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~start (local $0 i32) @@ -1535,22 +1663,15 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~instanceof|managed-cast/Cat$85 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.ne - br_if $__inlined_func$~instanceof|managed-cast/Cat$85 - drop - i32.const 1 - end - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne if i32.const 1648 i32.const 1584 @@ -1585,35 +1706,28 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $__inlined_func$~instanceof|managed-cast/Cat$88 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.eqz - if - i32.const 1456 - i32.const 1584 - i32.const 36 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.store offset=8 - i32.const 0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.ne - br_if $__inlined_func$~instanceof|managed-cast/Cat$88 - drop - i32.const 1 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.eqz + if + i32.const 1456 + i32.const 1584 + i32.const 36 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne if i32.const 1648 i32.const 1584 @@ -1649,22 +1763,15 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - block $__inlined_func$~instanceof|managed-cast/Cat$91 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.ne - br_if $__inlined_func$~instanceof|managed-cast/Cat$91 - drop - i32.const 1 - end - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne if i32.const 1648 i32.const 1584 @@ -1788,132 +1895,4 @@ call $~lib/builtins/abort unreachable ) - (func $managed-cast/Cat#constructor (result i32) - (local $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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1724 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 1724 - i32.lt_s - br_if $folding-inner0 - 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 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1724 - 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 0 - 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 8 - i32.add - global.set $~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 - local.get $0 - return - end - i32.const 34512 - i32.const 34560 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $managed-cast/testUpcastToNullable (param $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 1724 - i32.lt_s - if - i32.const 34512 - i32.const 34560 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/many-locals.release.wat b/tests/compiler/many-locals.release.wat index d6e24e0568..fc05e1dc8d 100644 --- a/tests/compiler/many-locals.release.wat +++ b/tests/compiler/many-locals.release.wat @@ -6,11 +6,11 @@ (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) (export "memory" (memory $0)) - (func $many-locals/testI32 (param $0 i32) (result i32) - local.get $0 - ) (func $many-locals/testI8 (param $0 i32) (result i32) local.get $0 i32.extend8_s ) + (func $many-locals/testI32 (param $0 i32) (result i32) + local.get $0 + ) ) diff --git a/tests/compiler/memcpy.release.wat b/tests/compiler/memcpy.release.wat index b82c318426..1a27a0f799 100644 --- a/tests/compiler/memcpy.release.wat +++ b/tests/compiler/memcpy.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32 i32) (result i32))) (type $2 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memcpy/dest (mut i32) (i32.const 0)) diff --git a/tests/compiler/memmove.release.wat b/tests/compiler/memmove.release.wat index 9c569cc378..ae5857e2d3 100644 --- a/tests/compiler/memmove.release.wat +++ b/tests/compiler/memmove.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32 i32) (result i32))) (type $2 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memmove/dest (mut i32) (i32.const 0)) diff --git a/tests/compiler/memory.release.wat b/tests/compiler/memory.release.wat index b1afa82e8f..aafefd95ad 100644 --- a/tests/compiler/memory.release.wat +++ b/tests/compiler/memory.release.wat @@ -16,6 +16,9 @@ (data $24 (i32.const 1216) "\01") (export "memory" (memory $0)) (start $~start) + (func $~start + call $start:memory + ) (func $start:memory (local $0 i32) i32.const 1024 @@ -257,7 +260,4 @@ i32.const 1215 global.set $memory/ptr ) - (func $~start - call $start:memory - ) ) diff --git a/tests/compiler/memset.release.wat b/tests/compiler/memset.release.wat index 422cb7f274..4a0b59732f 100644 --- a/tests/compiler/memset.release.wat +++ b/tests/compiler/memset.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32))) - (type $1 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32 i32))) (type $2 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memset/dest (mut i32) (i32.const 0)) @@ -206,7 +206,7 @@ i32.const 1 i32.const 16 call $memset/memset - global.get $memset/dest + i32.const 33852 i32.load8_u i32.const 1 i32.ne diff --git a/tests/compiler/new.release.wat b/tests/compiler/new.release.wat index 79b25886d8..b952e13bf6 100644 --- a/tests/compiler/new.release.wat +++ b/tests/compiler/new.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (result i32))) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (result i32))) (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) @@ -38,87 +38,6 @@ (data $8 (i32.const 1440) "\08\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $new/ref - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/gen - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/ref2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/genext - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/genext2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/genext3 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -271,92 +190,364 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 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 $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + local.get $1 + i32.load + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.load offset=8 - local.set $5 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load offset=4 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub local.tee $4 - if + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + 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 $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $new/Gen#constructor (param $0 i32) (result 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 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + 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.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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if local.get $4 local.get $5 i32.store offset=8 @@ -663,157 +854,288 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $new/GenExt + block $new/ns.Ref + block $new/Gen + block $new/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return end + return end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s if - return + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $new/ns.Ref#constructor (result i32) + (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 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 local.get $0 - local.get $3 - i32.store offset=1568 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $new/Ref#constructor (result i32) (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result 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 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $new/GenExt#constructor (result i32) + (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 1476 + i32.lt_s if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34256 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - i32.const 35824 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $new/Gen#constructor + local.tee $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34256 - i32.add - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34256 + i32.const 0 + i32.store + i32.const 35824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34256 + i32.add + i32.const 0 i32.store offset=4 i32.const 0 local.set $1 @@ -857,880 +1179,558 @@ i32.const 34256 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34244 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $new/ref + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/gen + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/ref2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34244 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34244 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end + ) + (func $~start + (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 + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34244 + 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 $new/Ref#constructor + global.set $new/ref + call $new/Ref#constructor + global.set $new/ref + call $new/Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/ref + i32.const 0 + call $new/Gen#constructor + global.set $new/gen + i32.const 0 + call $new/Gen#constructor + global.set $new/gen i32.const 0 + call $new/Gen#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/gen + call $new/ns.Ref#constructor + global.set $new/ref2 + call $new/ns.Ref#constructor + global.set $new/ref2 + call $new/ns.Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/ref2 + call $new/GenExt#constructor + global.set $new/genext + call $new/GenExt#constructor + global.set $new/genext2 + call $new/GenExt#constructor + global.set $new/genext3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 + global.get $~lib/rt/itcms/white + i32.eqz local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 $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 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - unreachable + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34244 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34244 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - 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 $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $new/GenExt - block $new/ns.Ref - block $new/Gen - block $new/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - (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 - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34244 - 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 $new/Ref#constructor - global.set $new/ref - call $new/Ref#constructor - global.set $new/ref - call $new/Ref#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.set $new/ref - i32.const 0 - call $new/Gen#constructor - global.set $new/gen - i32.const 0 - call $new/Gen#constructor - global.set $new/gen - i32.const 0 - call $new/Gen#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.set $new/gen - call $new/ns.Ref#constructor - global.set $new/ref2 - call $new/ns.Ref#constructor - global.set $new/ref2 - call $new/ns.Ref#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.set $new/ref2 - call $new/GenExt#constructor - global.set $new/genext - call $new/GenExt#constructor - global.set $new/genext2 - call $new/GenExt#constructor - global.set $new/genext3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $new/Ref#constructor (result i32) - (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 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $new/Gen#constructor (param $0 i32) (result 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 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - 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.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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $new/ns.Ref#constructor (result i32) - (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 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $new/GenExt#constructor (result i32) - (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 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $new/Gen#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/object/Object#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 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - 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 0 - 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 ) ) diff --git a/tests/compiler/number.release.wat b/tests/compiler/number.release.wat index 6c756f828a..71d88ecec9 100644 --- a/tests/compiler/number.release.wat +++ b/tests/compiler/number.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func)) (type $1 (func (param i32 i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32 i32 i32))) - (type $9 (func (param i64 i64 i32 i64) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i64 i64 i32 i64) (result i32))) + (type $9 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $number/a (mut i32) (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -79,1052 +79,959 @@ (data $31 (i32.const 4656) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - 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 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 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 4676 + i32.lt_s if - return + i32.const 37472 + i32.const 37520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$165 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 37444 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$165 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 4656 - i32.load - i32.gt_u - if - i32.const 1472 - i32.const 1536 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 4660 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + i32.store local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer 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/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) local.get $3 + local.tee $0 i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$81 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$81 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/number/I32#toString (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 $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4676 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 203 - i32.const 14 + i32.const 37472 + i32.const 37520 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 221 - i32.const 16 - 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 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$73 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 + i32.const 1 + i32.shl + local.tee $1 + select + 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.tee $2 + i32.const 1 + i32.shl local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.add + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 local.get $1 - local.get $6 - i32.const 4 i32.add local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1616 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 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 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.add + global.set $~lib/memory/__stack_pointer end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and + local.get $0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end + global.get $~lib/rt/itcms/white local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter end - local.get $3 + block $__inlined_func$~lib/rt/itcms/Object#unlink$165 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 37444 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$165 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 4656 i32.load - local.set $4 - local.get $5 - local.set $1 + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 4660 + i32.add + i32.load + i32.const 32 + i32.and end - else + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 local.get $0 - i32.const 1572 + 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/visitCount + i32.const 1 i32.add + global.set $~lib/rt/itcms/visitCount + 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.gt_u + i32.const 10000 + i32.ge_u if - i32.const 0 - i32.const 1616 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $3 + 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 $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + i32.const 100 + i32.ge_u if - return + 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 1660 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end local.get $1 - local.get $4 - i32.const 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 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/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 8 - i32.sub + i32.const -4 + i32.and local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 37456 - i32.const 0 - i32.store - i32.const 39024 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 37456 i32.add - i32.const 0 + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 37456 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 37456 - i32.const 39028 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 37456 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 37444 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 37444 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 37444 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1254,6 +1161,249 @@ end end ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37456 + i32.const 0 + i32.store + i32.const 39024 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37456 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37456 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37456 + i32.const 39028 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37456 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + 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 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -1568,228 +1718,329 @@ memory.fill local.get $1 ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (func $~start + call $start:number + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $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 1660 - i32.add - i64.load32_u - local.get $3 - 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 $1 - i32.const 100 - i32.ge_u + i32.eqz if local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 i32.const 1 i32.shl + i32.const 3456 i32.add - local.get $1 - i32.const 100 - i32.rem_u + i32.const 3145774 + i32.store + local.get $0 i32.const 2 - i32.shl - i32.const 1660 i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 + return end + local.get $0 local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 + i32.add + local.tee $2 + i32.const 21 + i32.le_s + local.get $0 + local.get $2 + i32.le_s + i32.and + 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 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 $2 - i32.const 2 - i32.sub i32.const 1 i32.shl + i32.const 3456 i32.add - local.get $1 + i32.const 3145774 + i32.store + local.get $2 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/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 - global.get $~lib/memory/__stack_pointer - i32.const 4676 - i32.lt_s - if - i32.const 37472 - i32.const 37520 - 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/number/itoa32$73 - 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$73 - end - global.get $~lib/memory/__stack_pointer + i32.const 21 + i32.le_s + local.get $2 i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $1 - select - local.tee $3 - i32.const 100000 - i32.lt_u + i32.gt_s + i32.and if (result i32) - local.get $3 - i32.const 100 - i32.lt_u + local.get $2 + i32.const 1 + i32.shl + i32.const 3456 + 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 + 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 + local.get $2 + i32.const -6 + i32.gt_s + i32.and if (result i32) - local.get $3 - i32.const 10 - i32.ge_u + i32.const 2 + local.get $2 + i32.sub + local.tee $2 i32.const 1 + i32.shl + i32.const 3456 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.const 3456 + local.get $0 + i32.const 1 + i32.shl + 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 $2 + 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 $2 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 + local.get $0 + i32.const 1 + i32.eq + if + i32.const 3458 + i32.const 101 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $1 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + i32.const 3460 + local.get $0 + 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 + 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 $1 + select + i32.store16 + else + i32.const 3460 + i32.const 3458 + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + i32.sub + 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 + i32.const 4 + i32.add + local.tee $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $1 + 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 + 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 $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $0 + end + local.get $0 + i32.const 2 i32.add end end - local.tee $2 - i32.const 1 - i32.shl - local.get $1 - i32.add - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $1 - i32.add - local.get $3 - local.get $2 - 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 - i32.add - global.set $~lib/memory/__stack_pointer end - local.get $0 ) (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) (local $4 i32) @@ -1869,9 +2120,9 @@ i32.add end end - local.set $6 + local.set $2 loop $while-continue|0 - local.get $6 + local.get $2 i32.const 0 i32.gt_s if @@ -1887,7 +2138,7 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $6 + local.get $2 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 @@ -1895,7 +2146,7 @@ local.get $5 i32.const 1000000000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 1000000000 i32.rem_u @@ -1905,7 +2156,7 @@ local.get $5 i32.const 100000000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 100000000 i32.rem_u @@ -1915,7 +2166,7 @@ local.get $5 i32.const 10000000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 10000000 i32.rem_u @@ -1925,7 +2176,7 @@ local.get $5 i32.const 1000000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 1000000 i32.rem_u @@ -1935,7 +2186,7 @@ local.get $5 i32.const 100000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 100000 i32.rem_u @@ -1945,7 +2196,7 @@ local.get $5 i32.const 10000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 10000 i32.rem_u @@ -1955,7 +2206,7 @@ local.get $5 i32.const 1000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 1000 i32.rem_u @@ -1965,7 +2216,7 @@ local.get $5 i32.const 100 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 100 i32.rem_u @@ -1975,7 +2226,7 @@ local.get $5 i32.const 10 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 10 i32.rem_u @@ -1983,16 +2234,16 @@ br $break|1 end local.get $5 - local.set $2 + local.set $6 i32.const 0 local.set $5 br $break|1 end i32.const 0 - local.set $2 + local.set $6 end - local.get $2 local.get $4 + local.get $6 i32.or if local.get $4 @@ -2000,7 +2251,7 @@ i32.shl i32.const 3456 i32.add - local.get $2 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -2011,10 +2262,10 @@ i32.add local.set $4 end - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 local.get $3 local.get $5 i64.extend_i32_u @@ -2028,10 +2279,10 @@ i64.ge_u if global.get $~lib/util/number/_K - local.get $6 + local.get $2 i32.add global.set $~lib/util/number/_K - local.get $6 + local.get $2 i32.const 2 i32.shl i32.const 4384 @@ -2117,6 +2368,11 @@ i64.ne if local.get $4 + local.tee $5 + i32.const 1 + i32.add + local.set $4 + local.get $5 i32.const 1 i32.shl i32.const 3456 @@ -2128,15 +2384,11 @@ i32.const 48 i32.add i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 end - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 local.get $0 local.get $11 i64.and @@ -2146,12 +2398,12 @@ br_if $while-continue|4 end global.get $~lib/util/number/_K - local.get $6 + local.get $2 i32.add global.set $~lib/util/number/_K local.get $8 i32.const 0 - local.get $6 + local.get $2 i32.sub i32.const 2 i32.shl @@ -2213,515 +2465,264 @@ i32.store16 local.get $4 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 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 $2 - i32.const 21 - i32.le_s - local.get $0 - local.get $2 - i32.le_s - i32.and - 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 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 $2 - i32.const 1 - i32.shl - i32.const 3456 - 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 - local.get $2 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $2 - i32.const 1 - i32.shl - i32.const 3456 - 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 - 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 - local.get $2 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - i32.const 2 - local.get $2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 3456 - local.get $0 - i32.const 1 - i32.shl - 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 $2 - 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 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end - local.get $0 - local.get $2 - i32.add - else - local.get $0 i32.const 1 - i32.eq - if - i32.const 3458 - i32.const 101 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 3460 - local.get $0 - 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 - 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 $1 - select - i32.store16 - else - i32.const 3460 - i32.const 3458 - local.get $0 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - i32.sub - 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 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - i32.const 4 - i32.add - local.tee $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s + local.get $0 + i32.load offset=4 local.tee $2 + i32.const 3 + i32.and + i32.ne if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - 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 $0 + local.get $2 + i32.const -4 + i32.and 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 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return end - 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 $2 - select - i32.store16 local.get $0 - local.get $1 - i32.add + i32.load offset=4 + i32.const -4 + i32.and local.set $0 + br $while-continue|1 end - local.get $0 - i32.const 2 - i32.add 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 - block $~lib/object/Object + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 37444 + i32.lt_u + if local.get $0 - i32.const 8 - i32.sub i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end - return end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - call $start:number - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4676 - i32.lt_s - if - i32.const 37472 - i32.const 37520 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$81 - loop $while-continue|1 + local.get $0 + i32.const 37444 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37444 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$81 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:number @@ -2813,73 +2814,75 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $1 + local.tee $2 i64.const 4294967295 i64.and - local.tee $2 + local.tee $3 i64.const 31 i64.shl + local.set $1 local.get $2 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.set $3 - local.get $1 i64.const 32 i64.shr_u - local.tee $4 + local.tee $2 i64.const 31 i64.shl - local.get $2 + local.get $3 i64.const 31 i64.shl - local.tee $1 + local.get $3 + i64.const 10 + i64.shl i64.const 32 i64.shr_u i64.add - local.get $1 + local.tee $4 + i64.const 32 + i64.shr_u + i64.add + local.get $4 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 - local.get $4 + i64.const 1 + i64.sub + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 i64.const 31 i64.shl - local.get $3 + local.get $1 i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $1 i64.const 4294967295 i64.and - local.get $4 - 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 global.get $~lib/util/number/_exp_pow i32.const 2 i32.add - local.get $1 local.get $4 + local.get $2 i64.const 2147483647 i64.mul - local.get $2 + local.get $3 i64.const 2147483647 i64.mul - local.get $2 + local.get $3 i64.const 4294966784 i64.mul i64.const 32 @@ -2889,7 +2892,7 @@ i64.const 32 i64.shr_u i64.add - local.get $4 + local.get $2 i64.const 4294966784 i64.mul local.get $1 @@ -2909,9 +2912,7 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 + local.tee $5 call $~lib/rt/itcms/__new local.tee $0 i32.store diff --git a/tests/compiler/object-literal.release.wat b/tests/compiler/object-literal.release.wat index 53f67c6860..872f7b5c5f 100644 --- a/tests/compiler/object-literal.release.wat +++ b/tests/compiler/object-literal.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (param i32))) - (type $1 (func)) - (type $2 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i64))) (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,137 +48,29 @@ (data $15.1 (i32.const 1736) " ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.eqz if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$205 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34516 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$205 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1712 - i32.load - i32.gt_u - if - i32.const 1200 - i32.const 1264 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1716 - i32.add - i32.load - i32.const 32 - i32.and + return end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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.const 20 + i32.sub + local.tee $0 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 + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 @@ -234,710 +126,278 @@ end end ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1200 - call $~lib/rt/itcms/__visit - i32.const 1312 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - i32.const 0 - i32.const 1440 - i32.const 268 - i32.const 14 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - i32.const 0 - i32.const 1440 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + i32.ge_u + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$83 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$83 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (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 $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1440 - i32.const 201 - i32.const 14 + i32.const 1312 + i32.const 1104 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1440 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 i32.add - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 - i32.store + i32.store offset=12 local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 + local.get $3 i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl + i32.const 3 + i32.and i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add local.tee $1 i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34528 - i32.const 0 - i32.store - i32.const 36096 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34528 - i32.const 36100 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34528 - 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 34516 - i32.lt_u - if - return - end - 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 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1155,51 +615,105 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u + (func $~lib/object/Object#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 1748 + i32.lt_s if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 34544 + i32.const 34592 + 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 0 + i32.const 0 + 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 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1210,1056 +724,1148 @@ if i32.const 0 i32.const 1440 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 1073741820 - i32.gt_u + i32.eqz if - i32.const 1312 + i32.const 0 i32.const 1440 - i32.const 461 - i32.const 29 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + i32.load local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 + i32.const 1 + i32.and i32.eqz if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - 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.add - i32.const 1 - i32.sub - else - local.get $3 - end - else - local.get $3 - end - i32.const 4 - local.get $0 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 i32.add - i32.const -65536 + local.get $2 + i32.const -4 i32.and - i32.const 16 - i32.shr_u - local.set $2 + i32.add + local.tee $3 + i32.store local.get $1 - local.get $2 + i32.const 4 + i32.add local.get $1 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock + i32.const 4 + i32.sub + i32.load local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and i32.eqz if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store local.get $3 - local.get $1 - i32.load i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1440 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock + local.get $4 local.get $1 - i32.load - local.set $4 - local.get $3 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1440 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - i32.const -4 - i32.and - local.get $3 + i32.const 4 i32.sub - local.tee $2 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - local.get $4 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $4 - i32.const -2 - i32.and - i32.store - local.get $1 i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and - i32.store + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 - ) - (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 + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1312 - i32.const 1104 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 16 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl i32.add - call $~lib/rt/tlsf/allocateBlock - local.tee $2 local.get $1 - i32.store offset=12 - local.get $2 + i32.store offset=96 local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 i32.load offset=4 - i32.const 3 - i32.and + i32.const 1 + local.get $2 + i32.shl 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 + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size local.tee $1 i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $object-literal/OmittedFoo - block $object-literal/MixedOmitted - block $object-literal/OmittedTypes - block $object-literal/Managed - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34528 + i32.const 0 + i32.store + i32.const 36096 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - return end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=12 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=16 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=20 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=24 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=28 - call $~lib/rt/itcms/__visit - return end - unreachable - ) - (func $~start - call $start:object-literal + i32.const 34528 + i32.const 36100 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34528 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 34544 - i32.const 34592 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$205 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$205 + end local.get $0 + i32.load offset=8 + local.tee $2 i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer + else local.get $1 - i32.store - local.get $3 + i32.const 1712 + i32.load + i32.gt_u + if + i32.const 1200 + i32.const 1264 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 20 - i32.sub + i32.const 2 + i32.shl + i32.const 1716 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + block $invalid + block $object-literal/OmittedFoo + block $object-literal/MixedOmitted + block $object-literal/OmittedTypes + block $object-literal/Managed + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + 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 + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=12 + call $~lib/rt/itcms/__visit + local.get $0 i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit local.get $0 - i32.store + i32.load offset=20 + call $~lib/rt/itcms/__visit local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer + i32.load offset=24 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=28 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if local.get $1 - i32.const 7 - i32.and - i32.or - else 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 - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$83 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$83 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $object-literal/testOmittedTypes (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if i32.const 0 - i32.const 1504 - i32.const 57 - i32.const 3 + i32.const 1440 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - if - i32.const 0 - i32.const 1504 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i64.load offset=8 - i64.const 0 - i64.ne - if - i32.const 0 - i32.const 1504 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i64.load offset=16 - i64.const 0 - i64.ne - if - i32.const 0 - i32.const 1504 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load8_u offset=40 - if - i32.const 0 - i32.const 1504 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load16_u offset=42 - if - i32.const 0 - i32.const 1504 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $object-literal/testOmittedFoo (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 + i32.const 1312 + i32.const 1440 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.tee $1 - i32.store local.get $1 - i32.const 1664 - call $~lib/string/String.__eq + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 i32.eqz if + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + 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.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow i32.const 0 - i32.const 1504 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + local.get $2 + 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 + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $1 - i32.store + local.get $3 local.get $1 - i32.const 1696 - call $~lib/string/String.__eq - i32.eqz + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 - i32.const 1504 - i32.const 108 - i32.const 3 + i32.const 1440 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 - i32.const 1504 - i32.const 109 - i32.const 3 + i32.const 1440 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=12 - local.tee $1 - i32.store + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 - i32.const 1504 - i32.const 110 - i32.const 3 + i32.const 1440 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.load offset=16 - local.tee $1 - i32.store + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1504 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=20 - local.tee $1 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or 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.store offset=4 - 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 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=1568 local.get $0 - i32.load offset=28 - local.tee $1 - i32.store local.get $1 - i32.const 0 - call $~lib/string/String.__eq + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 34516 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1504 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.store + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.load offset=32 + 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 1504 - i32.const 115 + i32.const 1440 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or i32.store - 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 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1312 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1104 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:object-literal ) (func $start:object-literal (local $0 i32) @@ -3034,53 +2640,270 @@ 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|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 24 - i32.add - global.set $~lib/memory/__stack_pointer - return + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $object-literal/testOmittedTypes (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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=8 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1504 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1504 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_u offset=40 + if + i32.const 0 + i32.const 1504 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load16_u offset=42 + if + i32.const 0 + i32.const 1504 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $object-literal/testOmittedFoo (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3095,22 +2918,199 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + 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.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + 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.store offset=4 + 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.store offset=4 + 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.store offset=4 + 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.store offset=4 + 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.store offset=4 + 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 - global.get $~lib/memory/__stack_pointer 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.store offset=4 + 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 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 1504 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 - local.get $0 ) ) diff --git a/tests/compiler/operator-overload-non-ambiguity.release.wat b/tests/compiler/operator-overload-non-ambiguity.release.wat index 11cabd7d40..375613c57c 100644 --- a/tests/compiler/operator-overload-non-ambiguity.release.wat +++ b/tests/compiler/operator-overload-non-ambiguity.release.wat @@ -34,50 +34,235 @@ (data $9 (i32.const 1536) "\08\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/visitRoots - (local $0 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace + (local $2 i32) + (local $3 i32) + (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$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub 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 $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne + local.get $3 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + 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 $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -623,7 +808,181 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $operator-overload-non-ambiguity/T1 + block $operator-overload-non-ambiguity/P2 + block $operator-overload-non-ambiguity/Base + block $operator-overload-non-ambiguity/P1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34352 + i32.const 0 + i32.store + i32.const 35920 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34352 + i32.const 35924 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34352 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) @@ -737,85 +1096,296 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34352 - i32.const 0 - i32.store - i32.const 35920 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34352 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34352 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34352 - i32.const 35924 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34352 - global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/object/Object#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 1572 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + 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 0 + 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 + ) + (func $operator-overload-non-ambiguity/T1#constructor (result i32) + (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 1572 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $operator-overload-non-ambiguity/Base#constructor (param $0 i32) (result 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 1572 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + 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.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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + (local $0 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 1572 + 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 34340 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + i64.const 0 + i64.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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $operator-overload-non-ambiguity/Base#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 8 + 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 + i64.const 0 + i64.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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $operator-overload-non-ambiguity/Base#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + call $operator-overload-non-ambiguity/T1#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + call $operator-overload-non-ambiguity/T1#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.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -967,684 +1537,114 @@ global.set $~lib/rt/itcms/state end global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34340 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34340 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort unreachable end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - 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 $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $operator-overload-non-ambiguity/T1 - block $operator-overload-non-ambiguity/P2 - block $operator-overload-non-ambiguity/Base - block $operator-overload-non-ambiguity/P1 - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid - end - return - end - return - end - return - end - local.get $0 + local.get $0 + i32.const 34340 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34340 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 i32.load - call $~lib/rt/itcms/__visit - return + i32.const 1 + i32.and end - return + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - return end + i32.const 10 return end - return - end - unreachable - ) - (func $~start - (local $0 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 1572 - 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 34340 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 - i64.const 0 - i64.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 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $operator-overload-non-ambiguity/Base#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 8 - 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 - i64.const 0 - i64.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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $operator-overload-non-ambiguity/Base#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - call $operator-overload-non-ambiguity/T1#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - call $operator-overload-non-ambiguity/T1#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.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $operator-overload-non-ambiguity/Base#constructor (param $0 i32) (result 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 1572 - i32.lt_s - if - i32.const 34368 - i32.const 34416 - 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.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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $operator-overload-non-ambiguity/T1#constructor (result i32) - (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 1572 - i32.lt_s - if - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/object/Object#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 1572 - i32.lt_s - if - i32.const 34368 - i32.const 34416 - 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 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/optional-typeparameters.release.wat b/tests/compiler/optional-typeparameters.release.wat index e483a38001..9dd537f30a 100644 --- a/tests/compiler/optional-typeparameters.release.wat +++ b/tests/compiler/optional-typeparameters.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) @@ -36,75 +36,6 @@ (data $8 (i32.const 1440) "\t\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\02A\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $optional-typeparameters/tConcrete - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $optional-typeparameters/tDerived - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $optional-typeparameters/tMethodDerived - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $optional-typeparameters/tMethodDerived2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -257,90 +188,354 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 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 $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + local.get $1 + i32.load + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.load offset=8 - local.set $5 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load offset=4 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + 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 $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/object/Object#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 1480 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + 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 0 + 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 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 local.tee $4 if local.get $4 @@ -649,119 +844,168 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + block $invalid + block $optional-typeparameters/TestMethodDerived2 + block $~lib/array/Array<~lib/string/String> + block $optional-typeparameters/TestMethodDerived<~lib/string/String> + block $"optional-typeparameters/TestDerived" + block $"optional-typeparameters/TestConcrete" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + 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 1480 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -843,904 +1087,660 @@ i32.const 34256 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34248 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $optional-typeparameters/tConcrete + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tDerived + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 + i32.const 3 i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 - i32.and i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34248 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34248 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__visit_members local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - local.get $2 - i32.load offset=1568 + (func $~start + (local $0 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 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store memory.size - local.tee $1 i32.const 16 i32.shl - i32.const 4 + i32.const 34248 i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 + i32.const 1 i32.shr_u - local.set $3 - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 i32.store - local.get $1 - i32.const 32 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $3 - local.get $4 + 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tMethodDerived + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tMethodDerived + 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 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tMethodDerived2 + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tMethodDerived2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tMethodDerived + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.const 1 - i32.or + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/memory/__stack_pointer + return end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - block $invalid - block $optional-typeparameters/TestMethodDerived2 - block $~lib/array/Array<~lib/string/String> - block $optional-typeparameters/TestMethodDerived<~lib/string/String> - block $"optional-typeparameters/TestDerived" - block $"optional-typeparameters/TestConcrete" - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end - return - 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 1480 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 i32.const 1 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + global.get $~lib/rt/itcms/white + i32.eqz local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $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 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - i32.load - local.tee $3 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne if - local.get $3 - call $~lib/rt/itcms/__visit + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - unreachable - ) - (func $~start - (local $0 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 1480 - 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 34248 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $optional-typeparameters/tMethodDerived - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tMethodDerived - 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 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $optional-typeparameters/tMethodDerived2 - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tMethodDerived2 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tMethodDerived + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34248 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34248 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34248 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/object/Object#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 1480 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state 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 0 - 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 ) ) diff --git a/tests/compiler/possibly-null.release.wat b/tests/compiler/possibly-null.release.wat index b681c5b383..a187c01fee 100644 --- a/tests/compiler/possibly-null.release.wat +++ b/tests/compiler/possibly-null.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32))) - (type $1 (func (param i32 i32))) + (type $0 (func (param i32 i32))) + (type $1 (func (param i32))) (type $2 (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 33792)) @@ -8,108 +8,23 @@ (export "memory" (memory $0)) (export "testTrue" (func $export:possibly-null/testTrue)) (export "testFalseElse" (func $export:possibly-null/testTrue)) - (export "testFalseContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testFalseContinuation" (func $export:possibly-null/testNotNeNullContinuation)) (export "testNeNull" (func $export:possibly-null/testTrue)) (export "testEqNullElse" (func $export:possibly-null/testTrue)) - (export "testEqNullContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testEqNullContinuation" (func $export:possibly-null/testNotNeNullContinuation)) (export "testNotEqNull" (func $export:possibly-null/testTrue)) (export "testNotNeNullElse" (func $export:possibly-null/testTrue)) - (export "testNotNeNullContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testNotNeNullContinuation" (func $export:possibly-null/testNotNeNullContinuation)) (export "testWhile" (func $export:possibly-null/testWhile)) (export "testWhile2" (func $export:possibly-null/testWhile2)) (export "testWhile3" (func $export:possibly-null/testWhile3)) - (export "testLogicalAnd" (func $export:possibly-null/testLogicalAnd)) - (export "testLogicalOr" (func $export:possibly-null/testLogicalAnd)) - (export "testLogicalAndMulti" (func $export:possibly-null/testLogicalAndMulti)) - (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalAndMulti)) + (export "testLogicalAnd" (func $export:possibly-null/testLogicalOr)) + (export "testLogicalOr" (func $export:possibly-null/testLogicalOr)) + (export "testLogicalAndMulti" (func $export:possibly-null/testLogicalOrMulti)) + (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalOrMulti)) (export "testAssign" (func $export:possibly-null/testAssign)) (export "testNeverNull" (func $export:possibly-null/testTrue)) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 1024 - i32.lt_s - if - i32.const 33824 - i32.const 33872 - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:possibly-null/testFalseContinuation (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 1024 - i32.lt_s - if - i32.const 33824 - i32.const 33872 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$possibly-null/testFalseContinuation$12 - local.get $0 - i32.eqz - br_if $__inlined_func$possibly-null/testFalseContinuation$12 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:possibly-null/testWhile (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 1024 - i32.lt_s - if - i32.const 33824 - i32.const 33872 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - loop $while-continue|0 - local.get $0 - if - i32.const 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 - ) - (func $export:possibly-null/testWhile2 (param $0 i32) (param $1 i32) + (func $export:possibly-null/testWhile3 (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -139,10 +54,14 @@ loop $while-continue|0 local.get $0 if - global.get $~lib/memory/__stack_pointer local.get $1 - local.tee $0 - i32.store + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.set $0 + end br $while-continue|0 end end @@ -163,7 +82,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:possibly-null/testWhile3 (param $0 i32) (param $1 i32) + (func $export:possibly-null/testWhile2 (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -193,14 +112,10 @@ loop $while-continue|0 local.get $0 if + global.get $~lib/memory/__stack_pointer local.get $1 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.set $0 - end + local.tee $0 + i32.store br $while-continue|0 end end @@ -221,7 +136,119 @@ call $~lib/builtins/abort unreachable ) - (func $export:possibly-null/testLogicalAnd (param $0 i32) + (func $export:possibly-null/testWhile (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 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $while-continue|0 + local.get $0 + if + i32.const 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 + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNotNeNullContinuation (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 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$possibly-null/testNotNeNullContinuation$24 + local.get $0 + i32.eqz + br_if $__inlined_func$possibly-null/testNotNeNullContinuation$24 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalOrMulti (param $0 i32) (param $1 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 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalOr (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -268,33 +295,6 @@ call $~lib/builtins/abort unreachable ) - (func $export:possibly-null/testLogicalAndMulti (param $0 i32) (param $1 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 1024 - i32.lt_s - if - i32.const 33824 - i32.const 33872 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $export:possibly-null/testAssign (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 diff --git a/tests/compiler/reexport.release.wat b/tests/compiler/reexport.release.wat index 4bc03e65fc..b6b81aebab 100644 --- a/tests/compiler/reexport.release.wat +++ b/tests/compiler/reexport.release.wat @@ -5,8 +5,8 @@ (type $3 (func (param i32 i32))) (type $4 (func (result i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i64))) (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)) @@ -51,67 +51,6 @@ (export "renamed_default" (func $export-default/theDefault)) (export "memory" (memory $0)) (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $reexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -656,6 +595,176 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34288 + i32.const 0 + i32.store + i32.const 35856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34288 + i32.const 35860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34288 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -770,85 +879,189 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $reexport/car + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34288 - i32.const 0 - i32.store - i32.const 35856 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34288 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34288 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34288 - i32.const 35860 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34288 - global.set $~lib/rt/tlsf/ROOT + ) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $export-default/theDefault + ) + (func $~start + (local $0 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 1512 + 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 34280 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + 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 + return + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1110,63 +1323,6 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) (local $1 i32) @@ -1401,160 +1557,4 @@ local.get $1 i32.sub ) - (func $export-default/theDefault - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 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 1512 - 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 34280 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - 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 - return - end - i32.const 34304 - i32.const 34352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/rereexport.release.wat b/tests/compiler/rereexport.release.wat index 5a5feb5a82..30e4698072 100644 --- a/tests/compiler/rereexport.release.wat +++ b/tests/compiler/rereexport.release.wat @@ -47,69 +47,6 @@ (export "renamed_default" (func $export-default/theDefault)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $rereexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $rereexport/exportsNamespaceCar - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $reexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -654,145 +591,187 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__visit + return end + return end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + unreachable + ) + (func $exports/Car#get:numDoors (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s if - return + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 + i32.store local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize + (func $exports/Car#constructor (result i32) (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - 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 1560 + i32.lt_s if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34336 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 i32.store - i32.const 35904 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 i32.store loop $for-loop|0 local.get $0 @@ -848,6 +827,313 @@ i32.const 34336 global.set $~lib/rt/tlsf/ROOT ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $rereexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $export-default/theDefault + ) + (func $~start + (local $0 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 1560 + i32.lt_s + br_if $folding-inner0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1560 + 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 34328 + 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 + call $exports/Car#get:numDoors + 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 + call $exports/Car#get:numDoors + 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 + call $exports/Car#get:numDoors + 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 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) @@ -1090,80 +1376,23 @@ i32.const 1 i32.or i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) @@ -1394,233 +1623,4 @@ i32.store align=1 local.get $0 ) - (func $export-default/theDefault - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 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 1560 - i32.lt_s - br_if $folding-inner0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 1560 - 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 34328 - 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 - call $exports/Car#get:numDoors - 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 - call $exports/Car#get:numDoors - 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 - call $exports/Car#get:numDoors - 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 34352 - i32.const 34400 - 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $exports/Car#get:numDoors (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 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/resolve-access.release.wat b/tests/compiler/resolve-access.release.wat index b19813aed5..427ef20e2d 100644 --- a/tests/compiler/resolve-access.release.wat +++ b/tests/compiler/resolve-access.release.wat @@ -2,11 +2,11 @@ (type $0 (func (result i32))) (type $1 (func (param i32))) (type $2 (func)) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) (type $8 (func (param 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)) @@ -52,187 +52,6 @@ (export "propertyAccess" (func $resolve-access/propertyAccess)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - 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 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$143 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 36096 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$143 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 3296 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 3300 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -257,330 +76,491 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1424 - i32.const 268 - i32.const 14 + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1088 i32.const 1424 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1424 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1424 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 - i32.and + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 i32.add - local.tee $3 + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or i32.store - local.get $1 + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $4 + local.tee $3 + local.get $3 i32.load - local.set $2 + i32.const -3 + i32.and + i32.store end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 local.get $3 - i32.const 2 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - if + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (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 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz + i32.const 10000 + i32.ge_u if - i32.const 0 - i32.const 1424 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end + 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 - call $~lib/rt/tlsf/removeBlock + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i32.load + i32.store local.get $1 - local.get $6 - i32.const 4 + 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 $3 - i32.const -4 - i32.and + local.get $1 + i32.const 2 + i32.shl + i32.const 1740 i32.add - local.tee $3 + 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 - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.eqz if i32.const 0 i32.const 1424 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1424 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -588,520 +568,493 @@ if i32.const 0 i32.const 1424 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 + (local $6 i32) local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz if i32.const 0 i32.const 1424 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1424 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 i32.add - local.tee $3 i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - local.get $3 - i32.store offset=1568 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - i32.const 36096 - i32.const 0 - i32.store - i32.const 37664 - i32.const 0 - i32.store - loop $for-loop|0 + block $__inlined_func$~lib/rt/itcms/Object#unlink$143 local.get $0 - i32.const 23 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.const 2 - i32.shl + i32.load offset=8 + i32.eqz + local.get $0 i32.const 36096 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36096 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + br $__inlined_func$~lib/rt/itcms/Object#unlink$143 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + 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 end - i32.const 36096 - i32.const 37668 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36096 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 3296 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 3300 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + block $invalid + block $resolve-access/Container + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid + end + return + end + return + end return end local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36096 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + i32.load + call $~lib/rt/itcms/__visit + return end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array~visit + return end local.get $0 - i32.const 36096 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36096 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 + call $~lib/array/Array~visit return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1182,472 +1135,297 @@ i32.const 4 i32.shl i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1088 - i32.const 1424 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 + i32.const 2 + i32.shl i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - 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 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort unreachable end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1424 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable end end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow i32.const 0 - i32.const 1424 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort + i32.lt_s + else + i32.const 0 + end + if unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock + i32.const 36096 + i32.const 0 + i32.store + i32.const 37664 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36096 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36096 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36096 + i32.const 37668 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36096 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1424 - i32.const 361 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + 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 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 loop $while-continue|0 + local.get $0 local.get $1 - i32.const 10000 - i32.ge_u + i32.ne 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.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 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 1740 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end ) (func $~lib/number/U64#toString (param $0 i64) (result i32) (local $1 i32) @@ -1929,42 +1707,76 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-access/Container - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid - end - return - end - return - end - return - 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 - call $~lib/array/Array~visit - return + (func $resolve-access/Container#constructor (result i32) + (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 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + 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 0 + i32.const 0 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) (func $~start @@ -2001,282 +1813,265 @@ i32.const 1376 global.set $~lib/rt/itcms/fromSpace ) - (func $resolve-access/arrayAccess (result i32) + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - (local $2 i64) - (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - br_if $folding-inner0 - 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.const 1056 - i64.load align=1 - i64.store align=1 - local.get $4 - i32.store - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $3 - local.get $4 - i32.store - local.get $4 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36096 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $3 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1152 - i32.const 295 - i32.const 14 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white - local.get $4 - i32.const 20 - i32.sub - local.tee $5 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + local.get $0 + i32.const 36096 + i32.lt_u if - local.get $3 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 + 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 - local.tee $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36096 + i32.ge_u if - local.get $5 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $1 - i32.const 3 - i32.eq - i32.and + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $5 - call $~lib/rt/itcms/Object#makeGray + call $~lib/rt/tlsf/initialize end - end - end - end - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - i32.const 8 - i32.store offset=8 - local.get $3 - i32.const 1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=12 - i32.eqz - if - i32.const 1280 - i32.const 1488 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $~lib/number/U64#toString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 36128 - i32.const 36176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $resolve-access/Container#constructor (result i32) - (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 3328 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3328 - 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 0 - i32.const 0 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 36128 - i32.const 36176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $resolve-access/fieldAccess (result i32) - (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 3328 - i32.lt_s - if - i32.const 36128 - i32.const 36176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - call $resolve-access/Container#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 1 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load - call $~lib/number/U64#toString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $resolve-access/propertyAccess (result i32) (local $0 i32) @@ -2429,4 +2224,209 @@ call $~lib/builtins/abort unreachable ) + (func $resolve-access/fieldAccess (result i32) + (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 3328 + i32.lt_s + if + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $resolve-access/Container#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $resolve-access/arrayAccess (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i64) + (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 1056 + i64.load align=1 + i64.store align=1 + local.get $4 + i32.store + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $4 + i32.store + local.get $4 + if + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $4 + i32.const 20 + i32.sub + local.tee $5 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $3 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + i32.const 8 + i32.store offset=8 + local.get $3 + i32.const 1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/resolve-binary.release.wat b/tests/compiler/resolve-binary.release.wat index d3b598c887..73db3a219c 100644 --- a/tests/compiler/resolve-binary.release.wat +++ b/tests/compiler/resolve-binary.release.wat @@ -1,13 +1,13 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) (type $2 (func (result i32))) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i64))) (type $9 (func (param i64 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-binary/a (mut i32) (i32.const 0)) @@ -237,114 +237,323 @@ (data $45 (i32.const 11216) "\07\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $resolve-binary/foo - local.tee $0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11248 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 44048 + i32.const 44096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $resolve-binary/bar - local.tee $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - global.get $resolve-binary/bar2 - local.tee $0 - if + block $folding-inner0 + local.get $1 + i32.eqz local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $resolve-binary/baz - local.tee $0 - if + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1600 - call $~lib/rt/itcms/__visit - i32.const 1408 - call $~lib/rt/itcms/__visit - i32.const 2208 - call $~lib/rt/itcms/__visit - i32.const 3264 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1472 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$81 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$81 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/itcms/__visit (param $0 i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11248 + i32.lt_s if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 44048 + i32.const 44096 + 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/number/itoa32$74 + local.get $0 + i32.eqz if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 148 - i32.const 30 - 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 1376 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$74 + 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 + i32.const 1 + i32.shl + local.tee $1 + select + 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.tee $2 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $1 + i32.add + local.get $3 + local.get $2 + 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 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 global.set $~lib/rt/itcms/iter end @@ -462,330 +671,491 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1744 - i32.const 268 - i32.const 14 + i32.const 1408 + i32.const 1472 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1408 i32.const 1744 - i32.const 270 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + local.get $4 + local.get $2 + i32.const 12 + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1744 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1744 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 i32.const 4 i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else local.get $2 - i32.const -4 + local.get $6 + i32.const -2 i32.and - i32.add - local.tee $3 i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $4 + local.tee $3 + local.get $3 i32.load - local.set $2 + i32.const -3 + i32.and + i32.store end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u if - i32.const 0 - i32.const 1744 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + 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 - call $~lib/rt/tlsf/removeBlock + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store local.get $1 - local.get $6 - i32.const 4 + 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 $3 - i32.const -4 - i32.and + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 i32.add - local.tee $3 + 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 - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.eqz if i32.const 0 i32.const 1744 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1744 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -793,2319 +1163,1983 @@ if i32.const 0 i32.const 1744 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 + local.get $2 i32.const 4 i32.shl - local.get $2 + local.get $3 i32.add i32.const 2 i32.shl i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 + (local $6 i32) local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz if i32.const 0 i32.const 1744 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1744 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1744 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1744 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1744 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 44016 - i32.const 0 - i32.store - i32.const 45584 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 44016 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-binary/Baz + block $resolve-binary/Bar + block $resolve-binary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-binary/Foo $resolve-binary/Bar $resolve-binary/Baz $invalid + end + return + end + return + end + return + end local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 44016 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.load + call $~lib/rt/itcms/__visit + return end + return end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + return end + return end - i32.const 44016 - i32.const 45588 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 44016 - global.set $~lib/rt/tlsf/ROOT + unreachable ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/object/Object#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 11248 + i32.lt_s + if + i32.const 44048 + i32.const 44096 + 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 0 + i32.const 0 + 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 + ) + (func $~lib/number/F64#toString (result i32) + (local $0 i64) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 44016 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1472 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 44016 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 44016 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1744 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1408 - i32.const 1472 - i32.const 261 - 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$70 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1408 - i32.const 1744 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + (local $3 i64) + (local $4 i64) + (local $5 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 11248 + i32.lt_s if - i32.const 0 - i32.const 1744 - i32.const 501 - i32.const 14 + i32.const 44048 + i32.const 44096 + 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 + global.set $~lib/util/number/_K + i32.const 10136 + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 10568 + 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.tee $0 + i64.const 31 + i64.shl + local.set $4 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + i64.const 31 + i64.shl + local.get $0 + i64.const 31 + i64.shl + local.get $0 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + 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 $5 + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 31 + i64.shl local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 + 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 local.get $5 - i32.const 4 + global.get $~lib/util/number/_exp_pow + i32.const 3 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1744 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + local.get $3 + i64.const 2147483647 + i64.mul + local.get $0 + i64.const 2147483647 + i64.mul + local.get $0 + 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 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 9728 + local.get $2 + 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/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 + local.get $1 i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 + local.tee $2 i32.const 4 - i32.add + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 7 + i32.sub + local.set $2 end - local.get $2 local.get $1 - i32.store offset=12 + i32.const 16 + i32.lt_u local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 local.get $2 - local.get $3 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.const -1 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.shl 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 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 + if (result i32) + local.get $0 local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.const 10000 - i32.div_u - local.set $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $2 + i32.ctz + local.get $1 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 1788 i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 44016 + i32.const 0 + i32.store + i32.const 45584 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 i32.const 2 i32.shl - i32.const 1788 + i32.const 44016 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 44016 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end + i32.const 44016 + i32.const 45588 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 44016 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1744 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 100 - i32.ge_u + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl + local.get $3 + i32.const 4 i32.add local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1788 - i32.add - i32.load - i32.store + i32.gt_u + if + i32.const 0 + i32.const 1744 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 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.const 16 i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1788 - i32.add - i32.load - i32.store + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + i32.const 1572 i32.add local.get $1 - i32.const 48 - i32.add - i32.store16 + i32.gt_u + if + i32.const 0 + i32.const 1744 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end 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 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11248 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 44048 - i32.const 44096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store - block $__inlined_func$~lib/util/number/itoa32$74 + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $resolve-binary/foo + local.tee $0 + if 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 1376 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32$74 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/bar + local.tee $0 + if local.get $0 - i32.sub + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/bar2 + local.tee $0 + if local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/baz + local.tee $0 + if local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $1 - select - 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.tee $2 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + i32.const 1600 + call $~lib/rt/itcms/__visit + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.add - local.get $3 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $1 + i32.ne if local.get $0 - i32.const 45 - i32.store16 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 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/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $2 + (func $resolve-binary/Bar#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $11 - i64.extend_i32_s + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11248 + i32.lt_s + if + i32.const 44048 + i32.const 44096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new local.tee $0 - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - local.get $1 - i64.and - local.set $8 - local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $5 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add - end - end - 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 $5 - i32.const 1000000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $2 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $2 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $2 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $2 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $2 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $2 - end + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + call $start:resolve-binary + ) + (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 9728 + 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 $2 + i32.const 21 + i32.le_s + local.get $0 + local.get $2 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $0 local.get $2 - local.get $4 - i32.or + i32.lt_s if - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 + local.get $0 i32.const 1 i32.shl i32.const 9728 i32.add - local.get $2 - i32.const 65535 - i32.and i32.const 48 - i32.add i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $7 + end + local.get $2 + i32.const 1 + i32.shl + i32.const 9728 + 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 + local.get $2 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $2 i32.const 1 + i32.shl + i32.const 9728 + i32.add + local.tee $2 + i32.const 2 + i32.add + local.get $2 + i32.const 0 + local.get $1 i32.sub - local.set $7 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $8 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 + i32.const 1 + i32.shl + 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 + local.get $2 + i32.const -6 + i32.gt_s + i32.and + if (result i32) i32.const 2 + local.get $2 + i32.sub + local.tee $2 + i32.const 1 i32.shl - i32.const 10656 + i32.const 9728 i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $1 - local.get $4 + i32.const 9728 + local.get $0 i32.const 1 i32.shl - i32.const 9726 + memory.copy + i32.const 9728 + 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 9728 + 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 - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|3 + else + local.get $0 + i32.const 1 + i32.eq + if + i32.const 9730 + i32.const 101 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $1 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + i32.const 9732 local.get $0 - local.get $9 - i64.lt_u - local.get $3 local.get $0 - i64.sub + 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 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + i32.const 9732 + i32.const 45 + i32.const 43 + local.get $1 + select + i32.store16 + else + i32.const 9732 + i32.const 9730 + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + i32.sub + memory.copy + i32.const 9730 + i32.const 46 + i32.store16 local.get $1 - i64.ge_u - i32.and + i32.const 9728 + i32.add + local.tee $1 + i32.const 101 + i32.store16 offset=2 + local.get $1 + i32.const 4 + i32.add + local.tee $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u if (result i32) - local.get $0 local.get $1 - i64.add - local.tee $8 - local.get $9 - i64.lt_u - local.get $9 - local.get $0 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or + 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 - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 local.get $1 - i64.add - local.set $0 - br $while-continue|3 + 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 - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $8 - i64.const 10 - i64.mul - local.tee $0 - local.get $11 - i64.extend_i32_s - i64.shr_u - local.tee $1 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $0 - local.get $12 - i64.and - local.tee $8 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 10656 - i32.add - i64.load32_u - i64.mul - local.set $0 - local.get $4 - i32.const 1 - i32.shl - i32.const 9726 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|6 - local.get $0 - local.get $8 - i64.gt_u - local.get $3 - local.get $8 - i64.sub - local.get $10 - i64.ge_u - i32.and - if (result i32) - local.get $8 - local.get $10 - i64.add - local.tee $1 - local.get $0 - i64.lt_u - local.get $0 - local.get $8 - i64.sub - local.get $1 - local.get $0 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $8 - local.get $10 - i64.add - local.set $8 - br $while-continue|6 - end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - ) - (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 9728 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return + 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 $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $0 + end + local.get $0 + i32.const 2 + i32.add + end + end end - local.get $0 + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i64) local.get $1 - i32.add - local.tee $2 - i32.const 21 - i32.le_s local.get $0 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 local.get $2 - i32.le_s - i32.and + i32.sub + local.tee $11 + i64.extend_i32_s + local.tee $0 + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $12 + local.get $1 + i64.and + local.set $8 + local.get $1 + local.get $0 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 100000 + i32.lt_u 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 9728 - 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 9728 - 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 - local.get $2 - i32.const 0 - i32.gt_s - i32.and + local.get $5 + i32.const 100 + i32.lt_u if (result i32) - local.get $2 + local.get $5 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl - i32.const 9728 i32.add - local.tee $2 - i32.const 2 + else + local.get $5 + i32.const 10000 + i32.ge_u + i32.const 3 i32.add - local.get $2 - i32.const 0 - local.get $1 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $2 - i32.const 46 - i32.store16 - local.get $0 - i32.const 1 + local.get $5 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $5 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1000000 + i32.ge_u + i32.const 6 i32.add else - local.get $2 - i32.const 0 - i32.le_s - local.get $2 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - i32.const 2 - local.get $2 - i32.sub - local.tee $2 + local.get $5 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $5 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $2 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $2 + 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 $5 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 100000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100000 + i32.div_u + local.set $6 + local.get $5 + i32.const 100000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 1000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10 + i32.div_u + local.set $6 + local.get $5 + i32.const 10 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + local.set $6 + i32.const 0 + local.set $5 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $4 + local.get $6 + i32.or + if + local.get $4 + local.tee $7 i32.const 1 - i32.shl - i32.const 9728 i32.add - i32.const 9728 - local.get $0 + local.set $4 + local.get $7 i32.const 1 i32.shl - memory.copy i32.const 9728 - 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 9728 - 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 + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $5 + i64.extend_i32_u + local.get $11 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $8 + i64.add + local.tee $0 + i64.ge_u + if + global.get $~lib/util/number/_K local.get $2 i32.add - else - local.get $0 + global.set $~lib/util/number/_K + local.get $2 + i32.const 2 + i32.shl + i32.const 10656 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 i32.const 1 - i32.eq - if - i32.const 9730 - i32.const 101 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 9732 + i32.shl + i32.const 9726 + i32.add + local.tee $5 + i32.load16_u + local.set $2 + loop $while-continue|3 local.get $0 + local.get $9 + i64.lt_u + local.get $3 local.get $0 - i32.const 100000 - i32.lt_u + i64.sub + local.get $1 + i64.ge_u + i32.and 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 $1 + i64.add + local.tee $8 + local.get $9 + i64.lt_u + local.get $9 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 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - i32.const 9732 - i32.const 45 - i32.const 43 - local.get $1 - select - i32.store16 - else - i32.const 9732 - i32.const 9730 - local.get $0 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - i32.sub - memory.copy - i32.const 9730 - i32.const 46 - i32.store16 - local.get $1 - i32.const 9728 - i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 - local.get $1 - i32.const 4 - i32.add - local.tee $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $2 - if + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else i32.const 0 - local.get $1 - i32.sub - local.set $1 end - local.get $1 - 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 + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 end - 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 $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $0 end - local.get $0 - i32.const 2 - i32.add + local.get $5 + local.get $2 + i32.store16 + local.get $4 + return end + br $while-continue|0 end end - ) - (func $~lib/number/F64#toString (result i32) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 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 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - i32.const 1 + loop $while-continue|4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + local.get $8 + i64.const 10 + i64.mul + local.tee $0 + local.get $11 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $4 + local.tee $5 + i32.const 1 + i32.add + local.set $4 + local.get $5 + i32.const 1 + i32.shl + i32.const 9728 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $2 + local.get $0 + local.get $12 + i64.and + local.tee $8 + local.get $3 + i64.ge_u + br_if $while-continue|4 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const -4 + global.get $~lib/util/number/_K + local.get $2 + i32.add global.set $~lib/util/number/_K - i32.const 10136 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 10568 - 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.tee $0 - i64.const 31 - i64.shl - local.set $4 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - i64.const 31 - i64.shl - local.get $0 - i64.const 31 - i64.shl - local.get $0 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - 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 $5 - local.get $3 - i64.const 31 - i64.shl - local.get $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 - local.get $5 - global.get $~lib/util/number/_exp_pow - i32.const 3 + local.get $9 + i32.const 0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + i32.const 10656 i32.add - local.get $5 - local.get $3 - i64.const 2147483647 - i64.mul - local.get $0 - i64.const 2147483647 - i64.mul - local.get $0 - 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.load32_u 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 + local.set $0 + local.get $4 i32.const 1 i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 9728 - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 9726 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $5 + i32.load16_u + local.set $2 + loop $while-continue|6 + local.get $0 + local.get $8 + i64.gt_u + local.get $3 + local.get $8 + i64.sub + local.get $10 + i64.ge_u + i32.and + if (result i32) + local.get $8 + local.get $10 + i64.add + local.tee $1 + local.get $0 + i64.lt_u + local.get $0 + local.get $8 + i64.sub + local.get $1 + local.get $0 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $8 + local.get $10 + i64.add + local.set $8 + br $while-continue|6 + end + end + local.get $5 local.get $2 + i32.store16 + local.get $4 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-binary/Baz - block $resolve-binary/Bar - block $resolve-binary/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-binary/Foo $resolve-binary/Bar $resolve-binary/Baz $invalid - end - return - end - return - end + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - return end - return - end - return - end - unreachable - ) - (func $~start - call $start:resolve-binary - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 44016 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$81 - loop $while-continue|1 + local.get $0 + i32.const 44016 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 44016 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$81 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1744 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $resolve-binary/Bar#constructor (result i32) - (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 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) (func $start:resolve-binary (local $0 i32) @@ -4285,39 +4319,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#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 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - 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 0 - i32.const 0 - 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 - ) ) diff --git a/tests/compiler/resolve-elementaccess.release.wat b/tests/compiler/resolve-elementaccess.release.wat index 482d448e6c..8a6fc68b91 100644 --- a/tests/compiler/resolve-elementaccess.release.wat +++ b/tests/compiler/resolve-elementaccess.release.wat @@ -5,15 +5,15 @@ (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (type $10 (func (param f64) (result i32))) - (type $11 (func (param f32) (result i32))) - (type $12 (func (param i32) (result i32))) - (type $13 (func (param i32 i32 f32))) - (type $14 (func (param i32 i32) (result f32))) + (type $6 (func (param i32 i32) (result f32))) + (type $7 (func (param i32 i32 f32))) + (type $8 (func (param i32) (result i32))) + (type $9 (func (param f32) (result i32))) + (type $10 (func (param i32 i32 i64))) + (type $11 (func (param i32 i32 i32) (result i32))) + (type $12 (func (param i64 i64 i32 i64 i32) (result i32))) + (type $13 (func (param f64) (result i32))) + (type $14 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -90,201 +90,6 @@ (data $32 (i32.const 4800) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\19\00\00A\00\00\00A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $resolve-elementaccess/arr - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $resolve-elementaccess/buf - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - i32.const 3568 - call $~lib/rt/itcms/__visit - i32.const 4624 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1232 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$153 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 37600 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$153 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 4800 - i32.load - i32.gt_u - if - i32.const 1360 - i32.const 1424 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 4804 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -309,897 +114,849 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 268 - i32.const 14 + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 i32.const 1504 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1504 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1504 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1504 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + 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 - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/typedarray/Uint8Array#__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 4832 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 234 - i32.const 14 + i32.const 37632 + i32.const 37680 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 251 - i32.const 14 + i32.const 1360 + i32.const 1568 + i32.const 167 + i32.const 45 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 i32.add - i32.const 2 - i32.shl + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 37632 + i32.const 37680 + 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 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add + i32.store local.get $1 - i32.store offset=96 local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1568 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 382 - i32.const 14 + i32.const 37632 + i32.const 37680 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=1568 - local.tee $3 + local.get $1 + i32.eq if - local.get $3 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 local.get $1 - i32.const 16 + i32.const 20 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1572 - i32.add + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.gt_u + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$97 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$97 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end i32.const 0 - i32.const 1504 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $3 end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/typedarray/Uint8Array#__set (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 + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s + if + i32.const 37632 + i32.const 37680 + 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 - local.get $3 - i32.store offset=1568 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1568 + i32.const 178 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $1 - call $~lib/rt/tlsf/insertBlock + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s if + i32.const 37632 + i32.const 37680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 37600 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 39168 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + 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 1568 + i32.const 1315 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 37600 + i32.const 2744 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 37600 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2744 i32.add - local.set $0 - br $for-loop|0 + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - i32.const 37600 - i32.const 39172 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 37600 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 37600 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 37600 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 37600 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1504 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 - i32.const 256 - i32.lt_u + 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 4 - i32.shr_u + 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 - else + 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 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 + 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/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1210,1661 +967,1062 @@ if i32.const 0 i32.const 1504 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1504 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 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 + local.get $1 + i32.eqz if - i32.const 1168 - i32.const 1232 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load local.tee $2 - i32.const 1073741820 - i32.gt_u + i32.const 1 + i32.and if - i32.const 1168 - i32.const 1504 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 i32.add - i32.const -16 + local.get $2 + i32.const -4 i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $3 + i32.const 2 + i32.and if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + local.get $1 i32.const 4 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1504 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1504 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1504 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 - local.get $2 - local.get $3 - 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 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add + i32.const 2 + i32.shl i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl i32.add - local.tee $1 - i32.const 0 + local.tee $0 local.get $0 - memory.fill - local.get $1 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 - i32.store - local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq if local.get $0 + i32.load offset=8 + local.tee $1 i32.eqz if i32.const 0 i32.const 1232 - i32.const 295 - i32.const 14 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$153 + local.get $0 i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - i32.eq + local.tee $1 + i32.eqz if local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 37600 + i32.lt_u 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 - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$153 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + 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 end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 - i64.sub - local.set $10 - i64.const 1 - i32.const 0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 4800 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 4804 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 local.get $2 - i32.sub - local.tee $11 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $7 - i64.const 1 - i64.sub - local.tee $12 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 local.get $1 - i64.and - local.set $9 + i32.store offset=8 local.get $1 local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $5 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - 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 $5 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $6 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $6 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $4 - local.get $6 - i32.or - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 1776 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $9 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 2704 - i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $7 - local.get $4 - i32.const 1 - i32.shl - i32.const 1774 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|3 - local.get $0 - local.get $10 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $7 - i64.ge_u - i32.and - if (result i32) - local.get $10 - local.get $0 - local.get $7 - i64.add - local.tee $1 - i64.gt_u - local.get $10 + 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/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object local.get $0 - i64.sub - local.get $1 - local.get $10 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 + i32.const 8 i32.sub - local.set $6 - local.get $0 - local.get $7 - i64.add - local.set $0 - br $while-continue|3 + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid end + return end - local.get $2 - local.get $6 - i32.store16 - local.get $4 return end - br $while-continue|0 + return end + unreachable end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $9 - i64.const 10 - i64.mul - local.tee $1 - local.get $11 - i64.extend_i32_s - i64.shr_u - local.tee $0 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 1776 - i32.add - local.get $0 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $8 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/number/U8#toString (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 4832 + i32.lt_s + if + i32.const 37632 + i32.const 37680 i32.const 1 - i32.sub - local.set $8 - local.get $1 - local.get $12 - i64.and - local.tee $9 - local.get $3 - i64.ge_u - br_if $while-continue|4 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 2704 - i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 1774 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|6 - local.get $1 - local.get $9 - i64.gt_u - local.get $3 - local.get $9 - i64.sub - local.get $7 - i64.ge_u + i32.store + block $__inlined_func$~lib/util/number/utoa32$79 + local.get $0 + i32.const 255 i32.and - if (result i32) - local.get $1 - local.get $7 - local.get $9 - i64.add - local.tee $0 - i64.gt_u - local.get $1 - local.get $9 - i64.sub - local.get $0 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $7 - local.get $9 - i64.add - local.set $9 - br $while-continue|6 - end - end - local.get $2 - local.get $6 - i32.store16 - local.get $4 - ) - (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 + local.tee $1 + i32.eqz 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 + global.get $~lib/memory/__stack_pointer 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 + global.set $~lib/memory/__stack_pointer + i32.const 3536 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$79 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 + global.get $~lib/memory/__stack_pointer + i32.const 3 local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2744 + i32.const 10 + i32.ge_u + i32.const 1 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.ge_u + select + local.tee $2 i32.const 1 i32.shl - i32.add - local.get $1 i32.const 2 - i32.shl - i32.const 2744 - i32.add - i32.load + call $~lib/rt/itcms/__new + local.tee $0 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 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.store16 + global.set $~lib/memory/__stack_pointer end + local.get $0 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/number/F32#toString (param $0 f32) (result i32) + (local $1 f64) + (local $2 i32) (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s if + i32.const 37632 + i32.const 37680 + 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 1632 + local.set $2 + block $~lib/util/number/dtoa_impl|inlined.0 local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.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 + f64.sub + f64.const 0 + f64.ne + if + i32.const 1664 + local.set $2 + local.get $1 + local.get $1 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 1696 + i32.const 1744 + local.get $1 + f64.const 0 + f64.lt + select + local.set $2 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 1776 + local.get $3 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $2 + i32.const 2 + i32.shl i32.add - local.tee $3 - i32.const 21 - i32.le_s + i32.load offset=4 + i32.const -1 local.get $1 - local.get $3 - i32.le_s + i32.shl i32.and + local.tee $1 if (result i32) - 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 - 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 $3 - i32.const 1 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 i32.shl i32.add - i32.const 3145774 - i32.store - local.get $3 i32.const 2 + i32.shl i32.add + i32.load offset=96 else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and + local.tee $1 if (result i32) local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 + local.get $1 + i32.ctz + local.tee $1 i32.const 2 + i32.shl i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 0 local.get $2 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 46 - i32.store16 + i32.ctz local.get $1 - i32.const 1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl i32.add + i32.load offset=96 else - local.get $3 i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - 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 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37600 + i32.const 0 + i32.store + i32.const 39168 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37600 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - i32.const 1 - i32.shl - 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 + i32.const 16 + i32.lt_u if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - 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 - 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 - 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 $3 - select - i32.store16 - else local.get $0 i32.const 4 + i32.shl + local.get $1 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 - 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 - i32.const 4 + i32.const 37600 i32.add - local.tee $4 - 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 - 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 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 + i32.store offset=96 local.get $1 + i32.const 1 i32.add local.set $1 + br $for-loop|1 end - local.get $1 - i32.const 2 - i32.add end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end + i32.const 37600 + i32.const 39172 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37600 + global.set $~lib/rt/tlsf/ROOT ) - (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 i64) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $2 - if (result f64) - i32.const 1776 - i32.const 45 - i32.store16 - local.get $0 - f64.neg - else - local.get $0 - end - f32.demote_f64 - i32.reinterpret_f32 - local.tee $7 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.tee $8 - i32.const 1 - local.get $8 - select - i32.const 150 - i32.sub - local.tee $9 - i32.const 1 - i32.sub - local.get $7 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - local.tee $1 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $3 - i64.clz - i32.wrap_i64 - local.tee $7 - i32.sub - local.set $8 - local.get $3 - local.get $7 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i64.const 8388608 - i64.eq - i32.const 1 + i32.const 19 i32.add - local.tee $7 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $9 - local.get $7 - 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 + i32.const -16 + i32.and + i32.const 4 i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_sat_f64_s - local.tee $7 - local.get $7 - f64.convert_i32_s + local.set $1 local.get $0 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $7 - i32.const 3 - i32.shl - local.tee $8 - i32.sub - global.set $~lib/util/number/_K - local.get $8 - i32.const 1832 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $7 - i32.const 1 - i32.shl - i32.const 2528 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $1 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i64.clz - i64.shl - local.tee $1 - i64.const 4294967295 - i64.and - local.set $4 - global.get $~lib/util/number/_frc_pow - local.tee $10 - i64.const 4294967295 - i64.and - local.tee $11 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul local.get $4 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $5 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $12 + i32.const 2 + i32.and local.get $3 - i64.const 32 - i64.shr_u + i32.const 8 + i32.sub local.tee $3 - local.get $11 - i64.mul - local.get $11 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $6 - global.get $~lib/util/number/_frc_minus - local.tee $13 - i64.const 4294967295 - i64.and - local.set $14 - local.get $13 - i64.const 32 - i64.shr_u - local.tee $13 - local.get $11 - i64.mul - local.get $11 - local.get $14 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $11 - local.get $2 i32.const 1 - i32.shl - i32.const 1776 - i32.add + i32.or + i32.or + i32.store local.get $1 - local.get $10 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $5 - i64.const 32 - i64.shr_u - i64.add + i32.const 0 + i32.store offset=4 local.get $1 - local.get $4 - 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 + i32.const 0 + i32.store offset=8 local.get $1 + i32.const 4 + i32.add local.get $3 - i64.mul - local.get $6 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - 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 $3 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp i32.add - i32.const -64 - i32.sub + local.tee $3 + i32.const 2 + i32.store + local.get $0 local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 - local.get $13 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $14 - i64.mul - local.get $11 - 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 $2 - call $~lib/util/number/genDigits - local.get $2 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $2 - i32.add + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/number/F32#toString (param $0 f32) (result i32) - (local $1 f64) - (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 4832 - i32.lt_s + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $resolve-elementaccess/arr + local.tee $0 if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1632 - local.set $2 - block $~lib/util/number/dtoa_impl|inlined.0 + global.get $resolve-elementaccess/buf + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 3568 + call $~lib/rt/itcms/__visit + i32.const 4624 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $1 local.get $1 - f64.sub - f64.const 0 - f64.ne + i32.ne if - i32.const 1664 - local.set $2 - local.get $1 - local.get $1 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 1696 - i32.const 1744 - local.get $1 - f64.const 0 - f64.lt - select - local.set $2 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end + global.get $~lib/rt/itcms/white local.get $1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 1776 - local.get $3 - memory.copy + 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 + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + 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/number/U8#toString (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2879,116 +2037,25 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa32$79 - local.get $0 - i32.const 255 - i32.and - 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 3536 - local.set $0 - br $__inlined_func$~lib/util/number/utoa32$79 - end - global.get $~lib/memory/__stack_pointer - i32.const 3 - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $1 - i32.const 100 - i32.ge_u - select - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - 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-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:resolve-elementaccess - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 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 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#set:buffer global.get $~lib/memory/__stack_pointer @@ -3052,366 +2119,1298 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - 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.store - 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 1568 - i32.const 1315 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - 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.store - 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 1568 - i32.const 1304 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + (func $~start + call $start:resolve-elementaccess ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s + local.get $2 + i32.eqz if - i32.const 37632 - i32.const 37680 - i32.const 1 + local.get $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 return end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + 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 + 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 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.shl + i32.add + i32.const 3145774 i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and 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.const 7 + i32.sub + i32.const 1 + i32.shl + 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 + local.get $3 + i32.const -6 + i32.gt_s + i32.and + 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 + 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 + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + 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 + 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 + 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 $3 + select + i32.store16 + 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 + 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 + i32.const 4 + i32.add + local.tee $4 + 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 + 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 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end + end + end + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i64) + local.get $1 + local.get $0 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $2 + i32.sub + local.tee $11 + i64.extend_i32_s + local.tee $0 + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $12 + local.get $1 + i64.and + local.set $8 + local.get $1 + local.get $0 + i64.shr_u + i32.wrap_i64 + 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 $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 $2 + i32.const 1000000000 + i32.div_u + local.set $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $5 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $5 + end + local.get $4 + local.get $5 + i32.or + if + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.const 1 + i32.shl + i32.const 1776 + i32.add + local.get $5 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $3 + local.get $2 + i64.extend_i32_u + local.get $11 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $8 + i64.add + local.tee $0 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 2704 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 + i32.const 1 + i32.shl + i32.const 1774 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u + local.get $3 + local.get $0 + i64.sub + local.get $1 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $0 + local.get $1 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $0 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 + end + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + local.get $8 + i64.const 10 + i64.mul + local.tee $0 + local.get $11 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.shl + i32.const 1776 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $0 + local.get $12 + i64.and + local.tee $8 + local.get $3 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 2704 + i32.add + i64.load32_u + i64.mul + local.set $0 + local.get $4 + i32.const 1 + i32.shl + i32.const 1774 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|6 + local.get $0 + local.get $8 + i64.gt_u + local.get $3 + local.get $8 + i64.sub + local.get $10 + i64.ge_u + i32.and + if (result i32) + local.get $0 + local.get $8 + local.get $10 + i64.add + local.tee $1 + i64.gt_u + local.get $0 + local.get $8 + i64.sub + local.get $1 + local.get $0 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $10 + i64.add + local.set $8 + br $while-continue|6 + end + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + ) + (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) + (local $1 i64) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + local.get $0 + f64.const 0 + f64.lt + local.tee $2 + if (result f64) + i32.const 1776 + i32.const 45 + i32.store16 + local.get $0 + f64.neg + else + local.get $0 + end + f32.demote_f64 + i32.reinterpret_f32 + local.tee $4 + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 150 + i32.sub + local.tee $9 + i32.const 1 + i32.sub + local.get $4 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.get $8 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + i64.add + local.tee $1 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $3 + i64.clz + i32.wrap_i64 + local.tee $8 + i32.sub + local.set $4 + local.get $3 + local.get $8 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $1 + local.get $1 + i64.const 8388608 + i64.eq + i32.const 1 + i32.add + local.tee $8 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $9 + local.get $8 + 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 $0 + i32.trunc_sat_f64_s + local.tee $4 + local.get $4 + f64.convert_i32_s + local.get $0 + 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 $8 + i32.sub + global.set $~lib/util/number/_K + local.get $8 + i32.const 1832 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $4 + i32.const 1 + i32.shl + i32.const 2528 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $1 + local.get $1 + i64.clz + i64.shl + local.tee $1 + i64.const 4294967295 + i64.and + local.set $5 + global.get $~lib/util/number/_frc_pow + local.tee $10 + i64.const 4294967295 + i64.and + local.tee $11 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $5 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $6 + global.get $~lib/util/number/_frc_plus + local.tee $3 + i64.const 4294967295 + i64.and + local.set $12 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $11 + i64.mul + local.get $11 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + global.get $~lib/util/number/_frc_minus + local.tee $13 + i64.const 4294967295 + i64.and + local.set $14 + local.get $13 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $11 + i64.mul + local.get $11 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $11 + local.get $2 + i32.const 1 + i32.shl + i32.const 1776 + i32.add + local.get $1 + local.get $10 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $6 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $5 + 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 + local.get $1 + local.get $3 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $12 + 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.tee $3 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $3 + local.get $1 + local.get $13 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $14 + i64.mul + local.get $11 + 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 $2 + call $~lib/util/number/genDigits + local.get $2 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $2 + i32.add + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 37600 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$97 - loop $while-continue|1 + local.get $0 + i32.const 37600 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37600 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$97 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1504 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/typedarray/Uint8Array#__set (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 - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - 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.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1568 - i32.const 178 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8Array#__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 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1568 - i32.const 167 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $start:resolve-elementaccess (local $0 i32) diff --git a/tests/compiler/resolve-function-expression.release.wat b/tests/compiler/resolve-function-expression.release.wat index c3fbeb042f..6837fffa79 100644 --- a/tests/compiler/resolve-function-expression.release.wat +++ b/tests/compiler/resolve-function-expression.release.wat @@ -4,9 +4,9 @@ (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -56,70 +56,6 @@ (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)) (start $~start) - (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) - local.get $0 - i32.const 40 - i32.add - ) - (func $start:resolve-function-expression~anonymous|1 (param $0 i32) (result i32) - local.get $0 - i32.const 41 - i32.add - ) - (func $start:resolve-function-expression~anonymous|2 (param $0 i32) (result i32) - local.get $0 - i32.const 42 - i32.add - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1648 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - 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 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1520 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -664,119 +600,189 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if + (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 + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + 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 3448 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1792 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1792 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1792 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1792 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -858,1226 +864,1220 @@ i32.const 36224 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1792 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1792 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1792 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 1648 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + 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 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1520 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + br $while-continue|0 + end + end + ) + (func $~start + (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 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 2 + i32.const 1056 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and + 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 (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 36216 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1572 + i32.const 1568 + i32.store + 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 (type $0) + call $~lib/number/I32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + block $__inlined_func$~lib/string/String.__eq$1 (result 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 3448 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $5 + i32.const 3408 i32.eq if global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36216 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$~lib/string/String.__eq$1 + end + block $folding-inner0 + local.get $5 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store + local.get $1 + i32.const 3404 + i32.load + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + i32.const 3408 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=4 + i32.const 1 + local.get $5 + i32.const 7 + i32.and + local.get $1 + i32.const 4 + i32.lt_u + select + i32.eqz + if + loop $do-loop|0 + local.get $5 + i64.load + local.get $3 + i64.load + i64.eq + if + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end end end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + block $__inlined_func$~lib/util/string/compareImpl$80 + loop $while-continue|1 local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne if + local.get $5 + i32.load16_u + local.tee $2 + local.get $3 + i32.load16_u + local.tee $0 + i32.sub + local.set $4 local.get $0 local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$80 + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|1 end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 end + i32.const 0 + local.set $4 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.eqz + br $__inlined_func$~lib/string/String.__eq$1 end - global.get $~lib/rt/itcms/visitCount - return + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + i32.eqz if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end global.get $~lib/rt/itcms/white i32.eqz - local.get $1 - i32.const 3 + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.ne - if - i32.const 0 - i32.const 1520 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 36216 - 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 + local.set $0 + loop $while-continue|1 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36216 - i32.ge_u + global.get $~lib/rt/itcms/toSpace + i32.ne 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 $2 + global.set $~lib/rt/itcms/iter + local.get $1 local.get $0 - i32.const 15 + i32.load offset=4 + local.tee $2 + i32.const 3 i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else + i32.ne + if + local.get $0 local.get $2 - i32.load - i32.const 1 + i32.const -4 i32.and - end - if + local.get $1 + i32.or + i32.store offset=4 i32.const 0 - i32.const 1792 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1792 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 - local.tee $2 - i32.eqz + i32.const -4 + i32.and + i32.eq if - i32.const 0 - i32.const 1792 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/number/I32#toString (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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3448 - i32.lt_s - if - i32.const 36240 - i32.const 36288 - 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/number/itoa32$73 - 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 1424 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32$73 - 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 - i32.const 1 - i32.shl - local.tee $3 - 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 + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36216 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white local.get $0 - i32.const 1000 - i32.ge_u - i32.add + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - else + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.const 10000000 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36216 i32.lt_u - if (result i32) + if local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + 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.const 1000000000 - i32.ge_u - i32.const 8 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - i32.const 100000000 - i32.ge_u + i32.const 4 i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - local.tee $6 - i32.const 1073741804 - i32.ge_u - if - i32.const 1456 - i32.const 1520 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state + local.tee $0 + i32.const 36216 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT i32.eqz if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + call $~lib/rt/tlsf/initialize end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $7 - local.get $6 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1792 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $2 - i32.const 12 - i32.le_u - 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 $8 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $8 - i32.const 256 - i32.ge_u - if (result i32) - local.get $8 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $8 - i32.const 1 - i32.const 27 - local.get $8 - i32.clz + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - i32.shl - i32.add + local.set $2 + local.get $0 + i32.const 15 + i32.and i32.const 1 - i32.sub - else - local.get $8 - end - else - local.get $8 - end - i32.const 4 - local.get $7 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1792 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - local.get $7 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $7 - local.get $8 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1792 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $8 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1792 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $9 - local.get $8 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1792 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.const 10 + return end - local.get $9 - i32.const -4 - i32.and - local.get $8 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/number/I32#toString (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + 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/number/itoa32$73 + local.get $0 + i32.eqz if - local.get $2 - local.get $8 - local.get $9 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $8 - i32.add - local.tee $8 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $7 - local.get $8 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $9 - i32.const -2 - i32.and - i32.store - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $4 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/memory/__stack_pointer + i32.const 1424 + local.set $2 + br $__inlined_func$~lib/util/number/itoa32$73 end - local.get $2 - i32.const 2 - i32.store offset=12 - local.get $2 - local.get $6 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $4 - i32.load offset=8 - local.set $7 - local.get $2 - local.get $4 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $7 - local.get $2 - local.get $7 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $6 - memory.fill - local.get $2 - i32.store - local.get $2 - local.get $3 - i32.add - local.set $4 - loop $while-continue|0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) local.get $0 - i32.const 10000 - i32.ge_u - if + 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.rem_u - local.set $5 + 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 10000 - i32.div_u - local.set $0 - local.get $4 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl + i32.const 1000000 + i32.ge_u + i32.const 6 i32.add - local.get $5 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1836 + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 i32.add - i64.load32_u - local.get $5 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1836 + local.get $0 + i32.const 100000000 + i32.ge_u 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 + local.tee $1 + i32.const 1 + i32.shl + local.get $3 + i32.add + local.tee $6 + i32.const 1073741804 i32.ge_u if - local.get $4 - 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 1836 - i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 + i32.const 1456 + i32.const 1520 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 10 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold i32.ge_u if - local.get $4 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.set $7 + local.get $6 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1792 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $0 - i32.const 2 + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $8 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $8 + i32.const 256 + i32.ge_u + if (result i32) + local.get $8 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $8 + i32.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $8 + end + else + local.get $8 + end + i32.const 4 + local.get $7 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 i32.shl - i32.const 1836 - i32.add - i32.load - i32.store - else - local.get $4 - local.get $1 - i32.const 1 + i32.const 4 i32.sub - i32.const 1 + i32.ne i32.shl i32.add - local.get $0 - i32.const 48 + i32.const 65535 i32.add - i32.store16 - end - local.get $3 - if + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $4 local.get $2 - 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 $2 - ) - (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 - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid - end - return - end - return + local.get $4 + local.get $2 + local.get $4 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable end - return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + local.get $7 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $7 + local.get $8 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end 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 3448 - i32.lt_s + local.get $8 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if - i32.const 36240 - i32.const 36288 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1792 + i32.const 501 + i32.const 14 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.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer + local.get $7 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $9 + local.get $8 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - ) - (func $~start - (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 - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 3448 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 2 - i32.const 1056 - i32.load - call_indirect (type $0) - i32.const 42 - i32.ne + i32.const 15 + i32.and if i32.const 0 - i32.const 1088 - i32.const 1 - i32.const 1 + i32.const 1792 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1168 - i32.load - call_indirect (type $0) - i32.const 42 - i32.ne + local.get $9 + i32.const -4 + i32.and + local.get $8 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u if - i32.const 0 - i32.const 1088 - i32.const 6 + local.get $2 + local.get $8 + local.get $9 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $8 + i32.add + local.tee $8 + local.get $4 + i32.const 4 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.or + i32.store + local.get $7 + local.get $8 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $9 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $4 + i32.load + i32.const -3 + i32.and + i32.store end - memory.size - i32.const 16 - i32.shl - i32.const 36216 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1572 - i32.const 1568 - i32.store - 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 + local.get $2 + i32.const 2 + i32.store offset=12 + local.get $2 + local.get $6 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $4 + i32.load offset=8 + local.set $7 + local.get $2 + local.get $4 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $7 + i32.store offset=8 + local.get $7 + local.get $2 + local.get $7 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $4 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 i32.load - call_indirect (type $0) - call $~lib/number/I32#toString - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - block $__inlined_func$~lib/string/String.__eq$1 (result 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 3448 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $5 - i32.const 3408 - i32.eq + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $2 + i32.const 0 + local.get $6 + memory.fill + local.get $2 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $4 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - br $__inlined_func$~lib/string/String.__eq$1 - end - block $folding-inner0 - local.get $5 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 3408 - i32.store + local.get $0 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $4 local.get $1 - i32.const 3404 - i32.load + i32.const 4 + i32.sub + local.tee $1 i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.shl + i32.add local.get $5 - i32.store - i32.const 3408 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 3408 - i32.store offset=4 - i32.const 1 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u local.get $5 - i32.const 7 - i32.and - local.get $1 - i32.const 4 - i32.lt_u - select - i32.eqz - if - loop $do-loop|0 - local.get $5 - i64.load - local.get $3 - i64.load - i64.eq - if - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$80 - loop $while-continue|1 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $0 - if - local.get $5 - i32.load16_u - local.tee $2 - local.get $3 - i32.load16_u - local.tee $0 - i32.sub - local.set $4 - local.get $0 - local.get $2 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$80 - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|1 - end - end - i32.const 0 - local.set $4 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.eqz - br $__inlined_func$~lib/string/String.__eq$1 + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $4 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 + 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 - i32.eqz + local.get $0 + i32.const 10 + i32.ge_u if - i32.const 0 - i32.const 1088 - i32.const 11 + local.get $4 + 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 1836 + i32.add + i32.load + i32.store + else + local.get $4 + 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 $3 + if + local.get $2 + i32.const 45 + i32.store16 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - return end - i32.const 36240 - i32.const 36288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 + ) + (func $start:resolve-function-expression~anonymous|2 (param $0 i32) (result i32) + local.get $0 + i32.const 42 + i32.add + ) + (func $start:resolve-function-expression~anonymous|1 (param $0 i32) (result i32) + local.get $0 + i32.const 41 + i32.add + ) + (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 40 + i32.add ) ) diff --git a/tests/compiler/resolve-new.release.wat b/tests/compiler/resolve-new.release.wat index e783565632..ac44b8fd07 100644 --- a/tests/compiler/resolve-new.release.wat +++ b/tests/compiler/resolve-new.release.wat @@ -2,8 +2,8 @@ (type $0 (func)) (type $1 (func (param i32))) (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -33,57 +33,6 @@ (data $8 (i32.const 1440) "\05\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $resolve-new/foo - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -628,6 +577,171 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-new/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -742,435 +856,89 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $resolve-new/foo + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34240 - i32.const 35812 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34240 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (local $3 i32) + (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$69 + i32.const 2048 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34232 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34232 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34232 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 + i32.gt_s + br_if $do-loop|0 end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/total @@ -1369,32 +1137,68 @@ memory.fill local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-new/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + (func $resolve-new/Foo#constructor (result i32) + (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 1464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1464 + 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 0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) (func $~start @@ -1461,68 +1265,264 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $resolve-new/Foo#constructor (result i32) + (func $~lib/rt/itcms/step (result i32) (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 1464 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.store - global.get $~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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1464 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz + global.get $~lib/rt/itcms/toSpace + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34232 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34232 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 ) ) diff --git a/tests/compiler/resolve-propertyaccess.release.wat b/tests/compiler/resolve-propertyaccess.release.wat index e3c45c7b52..fc8a3c80bd 100644 --- a/tests/compiler/resolve-propertyaccess.release.wat +++ b/tests/compiler/resolve-propertyaccess.release.wat @@ -4,9 +4,9 @@ (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -70,531 +70,608 @@ (data $27 (i32.const 3680) "\05\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/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - 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 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 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 3704 + i32.lt_s if - return + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$126 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 36472 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$126 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 3680 - i32.load - i32.gt_u - if - i32.const 1472 - i32.const 1536 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 3684 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + i32.store local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer 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/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) local.get $3 + local.tee $0 i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$77 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$77 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/number/I32#toString (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 $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3704 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 203 - i32.const 14 + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + 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 $2 + br $__inlined_func$~lib/util/number/itoa32$73 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 i32.sub - i32.load + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + 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.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz + i32.shl + local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + 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 $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $4 + 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 - i32.const 0 - i32.const 1616 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $5 + 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 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add + i32.const 10 + i32.ge_u + if + local.get $5 + 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 $5 + 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 $3 - i32.const -4 - i32.and + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $3 - i32.store + global.set $~lib/memory/__stack_pointer end - local.get $4 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $4 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$126 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36472 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$126 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3680 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3684 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1616 - i32.const 234 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -602,520 +679,665 @@ if i32.const 0 i32.const 1616 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 + (local $6 i32) local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz if i32.const 0 i32.const 1616 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1616 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 36480 - i32.const 0 - i32.store - i32.const 38048 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 36480 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 261 + 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$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36480 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 + global.get $~lib/rt/itcms/total i32.const 1 + i32.shl + i32.const 1024 i32.add - local.set $1 - br $for-loop|1 + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 1 + 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 - local.set $0 - br $for-loop|0 + global.set $~lib/rt/itcms/threshold end end - i32.const 36480 - i32.const 38052 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36480 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1280 + i32.const 1616 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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 $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36472 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 end - global.get $~lib/rt/itcms/visitCount - return + else + local.get $5 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne + local.get $3 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 36472 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36472 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-propertyaccess/Class + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid + end + return end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + return end + return end - i32.const 10 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1177,800 +1399,578 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1280 - i32.const 1344 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1280 - i32.const 1616 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 i32.shl - i32.const 4 - i32.sub - i32.ne + i32.add + i32.const 2 i32.shl i32.add - i32.const 65535 + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 i32.add - i32.const -65536 + i32.shl i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort unreachable end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1616 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable end end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow i32.const 0 - i32.const 1616 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort + i32.lt_s + else + i32.const 0 + end + if unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock + i32.const 36480 + i32.const 0 + i32.store + i32.const 38048 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36480 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36480 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36480 + i32.const 38052 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36480 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1616 - i32.const 361 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 - ) - (func $~lib/number/I32#toString (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 3704 - i32.lt_s - if - i32.const 36496 - i32.const 36544 - 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/number/itoa32$73 - 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 $2 - br $__inlined_func$~lib/util/number/itoa32$73 - 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 - i32.const 1 - i32.shl - local.tee $3 - 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.tee $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $3 - i32.add - local.set $5 - 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 $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $4 - 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 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + 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 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 100 - i32.ge_u + local.get $1 + i32.ne if - local.get $5 - 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 $5 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - else - local.get $5 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + i32.const 20 i32.add + call $~lib/rt/__visit_members local.get $0 - i32.const 48 - i32.add - i32.store16 - end - local.get $3 - if - local.get $2 - i32.const 45 - i32.store16 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - 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) - block $invalid - block $resolve-propertyaccess/Class - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object + (func $~start + call $start:resolve-propertyaccess + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36472 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - return + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - return end - return + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/visitCount return end - return - end - unreachable - ) - (func $~start - call $start:resolve-propertyaccess - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3704 - i32.lt_s - if - i32.const 36496 - i32.const 36544 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$77 - loop $while-continue|1 + local.get $0 + i32.const 36472 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36472 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$77 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:resolve-propertyaccess diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat index 26ecc20cf0..d6ff759cbd 100644 --- a/tests/compiler/resolve-ternary.release.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32 i32 i32))) - (type $9 (func (param i64 i64 i32 i64) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i64 i64 i32 i64) (result i32))) + (type $9 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -76,55 +76,6 @@ (elem $0 (i32.const 1) $start:resolve-ternary~anonymous|0 $start:resolve-ternary~anonymous|1 $resolve-ternary/g1 $resolve-ternary/g2) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - 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 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -277,6 +228,110 @@ global.set $~lib/rt/itcms/visitCount 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 1660 + i32.add + i64.load32_u + local.get $3 + 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 $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 1660 + 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 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/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -669,461 +724,225 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (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 + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + 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 4632 + i32.lt_s + if + i32.const 37424 + i32.const 37472 + 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.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 382 - i32.const 14 + i32.const 37424 + i32.const 37472 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=1568 - local.tee $3 + local.get $1 + i32.eq if - local.get $3 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 local.get $1 - i32.const 16 + i32.const 20 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1572 - i32.add + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 37408 - i32.const 0 - i32.store - i32.const 38976 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + i32.eqz if - local.get $0 - i32.const 2 - i32.shl - i32.const 37408 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + loop $do-loop|0 + local.get $2 + i64.load local.get $1 - i32.const 16 - i32.lt_u + i64.load + i64.eq if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 - i32.shl + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$84 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 local.get $1 - i32.add + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$84 + local.get $2 i32.const 2 - i32.shl - i32.const 37408 i32.add - i32.const 0 - i32.store offset=96 + local.set $2 local.get $1 - i32.const 1 + i32.const 2 i32.add local.set $1 - br $for-loop|1 + br $while-continue|1 end end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end - i32.const 37408 - i32.const 38980 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 37408 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 37400 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 37400 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 37400 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 256 @@ -1251,12 +1070,255 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37408 + i32.const 0 + i32.store + i32.const 38976 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37408 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37408 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37408 + i32.const 38980 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37408 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + 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 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (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 @@ -1565,531 +1627,295 @@ memory.fill local.get $1 ) - (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 1660 - i32.add - i64.load32_u - local.get $3 - 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 $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 + (func $~start + (local $0 i64) + (local $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 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 4632 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 37400 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 1660 - i32.add - i32.load + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 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.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 - i32.const 1 - i32.shl - i32.add - local.get $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load + call $~lib/rt/itcms/__new + local.tee $1 i32.store - else - local.get $0 - local.get $2 + local.get $1 i32.const 1 - i32.sub i32.const 1 - i32.shl + 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.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - local.get $1 - local.get $0 - i64.sub - local.set $8 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $9 - i64.const 1 - i64.sub - local.tee $11 - local.get $1 - i64.and - local.set $7 - local.get $1 - local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u + i32.store + local.get $1 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 5 i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $5 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add + call $~lib/builtins/abort + unreachable end - end - local.set $6 - loop $while-continue|0 - local.get $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 4632 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer 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 $6 - 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 $5 - i32.const 1000000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $2 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $2 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $2 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $2 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $2 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $2 - end - local.get $2 - local.get $4 - i32.or - if - local.get $4 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - local.get $2 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $7 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $6 - i32.add - global.set $~lib/util/number/_K - local.get $6 - i32.const 2 - i32.shl - i32.const 4400 - i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 3470 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|3 - local.get $0 - local.get $8 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $1 - i64.ge_u - i32.and - if (result i32) - local.get $8 - local.get $0 - local.get $1 - i64.add - local.tee $7 - i64.gt_u - local.get $8 - local.get $0 - i64.sub - local.get $7 - local.get $8 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $1 - i64.add - local.set $0 - br $while-continue|3 - end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 + 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 $2 + i64.const 4294967295 + i64.and + local.tee $3 + i64.const 31 + i64.shl + local.set $0 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + i64.const 31 + i64.shl + local.get $3 + i64.const 31 + i64.shl local.get $3 i64.const 10 - i64.mul - local.set $3 - local.get $7 + 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 $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.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i64.const 31 + i64.shl + local.get $0 + i64.const 32 + i64.shr_u + i64.add + local.get $0 + i64.const 4294967295 + i64.and + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $4 + global.get $~lib/util/number/_exp_pow + i32.const 1 + i32.add + local.get $4 + local.get $2 + 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 $0 - local.get $10 - i64.extend_i32_s + i64.const 32 i64.shr_u + i64.add + local.get $2 + 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 + i32.const 1 + i32.shl + local.tee $5 + call $~lib/rt/itcms/__new local.tee $1 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + i32.store + local.get $1 + i32.const 3472 + local.get $5 + 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 $1 + i32.store + local.get $1 + i32.const 4464 + call $~lib/string/String.__eq + i32.eqz if - local.get $4 + i32.const 0 + i32.const 3264 + i32.const 13 i32.const 1 - i32.shl - i32.const 3472 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $4 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4496 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 24 i32.const 1 - i32.add - local.set $4 + call $~lib/builtins/abort + unreachable end - local.get $6 i32.const 1 - i32.sub - local.set $6 - local.get $0 - local.get $11 - i64.and - local.tee $7 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $6 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 0 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.const 4400 - i32.add - i64.load32_u - i64.mul - local.set $0 - local.get $4 - i32.const 1 - i32.shl - i32.const 3470 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|6 - local.get $0 - local.get $7 - i64.gt_u - local.get $3 - local.get $7 - i64.sub - local.get $9 - i64.ge_u - i32.and - if (result i32) - local.get $0 - local.get $7 - i64.sub - local.get $7 - local.get $9 - i64.add - local.tee $1 - local.get $0 - i64.sub - i64.gt_u - local.get $0 - local.get $1 - i64.gt_u - i32.or - else + i32.const 4560 + i32.load + call_indirect (type $0) + 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 (type $0) + i32.const 3 + i32.ne if - local.get $2 + i32.const 0 + i32.const 3264 + i32.const 43 i32.const 1 - i32.sub - local.set $2 - local.get $7 - local.get $9 - i64.add - local.set $7 - br $while-continue|6 + 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 $5 - local.get $2 - i32.store16 - local.get $4 + i32.const 37424 + i32.const 37472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2412,524 +2238,699 @@ end end ) - (func $start:resolve-ternary~anonymous|0 (param $0 i32) (result i32) - i32.const 2 - ) - (func $start:resolve-ternary~anonymous|1 (param $0 i32) (result i32) - i32.const 3 - ) - (func $resolve-ternary/g1 (param $0 i32) (result i32) - i32.const 4 - ) - (func $resolve-ternary/g2 (param $0 i32) (result i32) - i32.const 5 - ) - (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 - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - 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 4632 - i32.lt_s - if - i32.const 37424 - i32.const 37472 - i32.const 1 + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + local.get $1 + local.get $0 + i64.sub + local.set $8 + i64.const 1 + i32.const 0 + local.get $2 + i32.sub + local.tee $10 + i64.extend_i32_s + local.tee $0 + i64.shl + local.tee $9 + i64.const 1 + i64.sub + local.tee $11 + local.get $1 + i64.and + local.set $7 + local.get $1 + local.get $0 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 100 + i32.lt_u + if (result i32) + local.get $5 + i32.const 10 + i32.ge_u i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + else + local.get $5 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $5 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $5 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $5 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $5 + i32.const 100000000 + i32.ge_u + i32.add end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - unreachable - ) - (func $~start - (local $0 i64) - (local $1 i32) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 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 4632 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 37400 - 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 $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4632 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + local.set $2 + loop $while-continue|0 + local.get $2 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 1 - i32.const 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 3232 - call $~lib/string/String.__eq - i32.eqz + i32.gt_s if - i32.const 0 - i32.const 3264 - i32.const 5 + 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 $2 + 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 $5 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 100000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100000 + i32.div_u + local.set $6 + local.get $5 + i32.const 100000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 1000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10 + i32.div_u + local.set $6 + local.get $5 + i32.const 10 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + local.set $6 + i32.const 0 + local.set $5 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $4 + local.get $6 + i32.or + if + local.get $4 + i32.const 1 + i32.shl + i32.const 3472 + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $2 + local.get $3 + local.get $5 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $7 + i64.add + local.tee $0 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $2 + i32.add + global.set $~lib/util/number/_K + local.get $2 + i32.const 2 + i32.shl + i32.const 4400 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 + i32.const 1 + i32.shl + i32.const 3470 + i32.add + local.tee $5 + i32.load16_u + local.set $2 + loop $while-continue|3 + local.get $0 + local.get $8 + i64.lt_u + local.get $3 + local.get $0 + i64.sub + local.get $1 + i64.ge_u + i32.and + if (result i32) + local.get $8 + local.get $0 + local.get $1 + i64.add + local.tee $7 + i64.gt_u + local.get $8 + local.get $0 + i64.sub + local.get $7 + local.get $8 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 + end + end + local.get $5 + local.get $2 + i32.store16 + local.get $4 + return + end + br $while-continue|0 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 4632 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - 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 $0 - i64.const 4294967295 - i64.and - local.tee $2 - i64.const 31 - i64.shl - local.get $2 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.set $3 - local.get $0 - i64.const 32 - i64.shr_u - local.tee $4 - i64.const 31 - i64.shl - local.get $2 - i64.const 31 - i64.shl - local.tee $0 - i64.const 32 - i64.shr_u - i64.add - local.get $0 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $4 - i64.const 31 - i64.shl - local.get $3 - i64.const 32 - i64.shr_u - i64.add + end + loop $while-continue|4 local.get $3 - i64.const 4294967295 - i64.and - local.get $4 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 $0 - global.get $~lib/util/number/_exp_pow - i32.const 1 - i32.add - local.get $0 - local.get $4 - i64.const 2147483647 - i64.mul - local.get $2 - i64.const 2147483647 i64.mul - local.get $2 - i64.const 4294966784 + local.set $3 + local.get $7 + i64.const 10 i64.mul - i64.const 32 - i64.shr_u - i64.add local.tee $0 - i64.const 32 - i64.shr_u - i64.add - local.get $4 - i64.const 4294966784 - i64.mul - local.get $0 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 + local.get $10 + i64.extend_i32_s 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 - i32.const 1 - i32.shl - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - local.get $1 - i32.const 3472 - local.get $5 - 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 $1 - i32.store - local.get $1 - 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 (type $0) - 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 (type $0) - i32.const 4 - i32.ne + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne if - i32.const 0 - i32.const 3264 - i32.const 35 + local.get $4 + local.tee $5 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 4528 - i32.load - call_indirect (type $0) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 3264 - i32.const 43 + i32.add + local.set $4 + local.get $5 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.const 3472 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 37424 - i32.const 37472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4632 - i32.lt_s - if - i32.const 37424 - i32.const 37472 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + local.get $2 i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.set $2 local.get $0 - i32.store + local.get $11 + i64.and + local.tee $7 + local.get $3 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $2 + i32.add + global.set $~lib/util/number/_K + local.get $8 + i32.const 0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + i32.const 4400 + i32.add + i64.load32_u + i64.mul + local.set $0 + local.get $4 + i32.const 1 + i32.shl + i32.const 3470 + i32.add + local.tee $5 + i32.load16_u + local.set $2 + loop $while-continue|6 local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.get $7 + i64.gt_u local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u + local.get $7 + i64.sub + local.get $9 + i64.ge_u + i32.and if (result i32) + local.get $0 + local.get $7 + i64.sub + local.get $7 + local.get $9 + i64.add + local.tee $1 + local.get $0 + i64.sub + i64.gt_u + local.get $0 + local.get $1 + i64.gt_u + i32.or + else + i32.const 0 + end + if local.get $2 - i32.const 7 + i32.const 1 + i32.sub + local.set $2 + local.get $7 + local.get $9 + i64.add + local.set $7 + br $while-continue|6 + end + end + local.get $5 + local.get $2 + i32.store16 + local.get $4 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - local.get $1 - i32.const 7 + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 + i32.const 37400 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - block $__inlined_func$~lib/util/string/compareImpl$84 - loop $while-continue|1 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 37400 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37400 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$84 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $start:resolve-ternary~anonymous|1 (param $0 i32) (result i32) + i32.const 3 + ) + (func $start:resolve-ternary~anonymous|0 (param $0 i32) (result i32) + i32.const 2 + ) + (func $resolve-ternary/g2 (param $0 i32) (result i32) + i32.const 5 + ) + (func $resolve-ternary/g1 (param $0 i32) (result i32) + i32.const 4 + ) ) diff --git a/tests/compiler/resolve-unary.release.wat b/tests/compiler/resolve-unary.release.wat index 62ac9cd5ff..a407109355 100644 --- a/tests/compiler/resolve-unary.release.wat +++ b/tests/compiler/resolve-unary.release.wat @@ -2,8 +2,8 @@ (type $0 (func)) (type $1 (func (param i32 i32) (result i32))) (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) (type $7 (func (result i32))) @@ -84,66 +84,167 @@ (data $32 (i32.const 3840) "\07\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $resolve-unary/foo - local.tee $0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $resolve-unary/bar - local.tee $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - 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 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$79 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$79 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -297,897 +398,605 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 268 - i32.const 14 + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + 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 $2 + br $__inlined_func$~lib/util/number/itoa32$73 + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1616 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else + local.get $0 + i32.sub + local.get $0 + local.get $0 i32.const 31 - i32.const 1073741820 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + 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.tee $1 + i32.const 1 + i32.shl local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 local.get $3 - i32.const 1073741820 + i32.add + local.set $5 + 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 $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $4 + 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 - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 + if + local.get $5 + 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 $5 + 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 $5 + 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 $3 - local.get $4 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.add + global.set $~lib/memory/__stack_pointer end - local.tee $3 - i32.const 16 - i32.lt_u local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1616 - i32.const 284 - i32.const 14 + i32.const 1280 + i32.const 1344 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + 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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1280 i32.const 1616 - i32.const 203 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1616 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1616 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1616 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 36640 - i32.const 0 - i32.store - i32.const 38208 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 36640 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36640 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 36640 - i32.const 38212 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36640 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36640 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 36640 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36640 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 i32.const 0 + local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 256 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 i32.lt_u if - local.get $1 + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - 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.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1198,686 +1007,772 @@ if i32.const 0 i32.const 1616 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 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 + local.get $1 + i32.eqz if - i32.const 1280 - i32.const 1344 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1280 + i32.const 0 i32.const 1616 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 i32.add - i32.const -16 + local.get $2 + i32.const -4 i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $3 + i32.const 2 + i32.and if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + local.get $1 i32.const 4 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1616 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1616 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1616 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 local.get $2 + local.get $3 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $resolve-unary/Bar + block $resolve-unary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.const 1 - i32.or + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s + if + i32.const 36672 + i32.const 36720 + 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 $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 i32.const 4 - i32.add + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 7 + i32.sub + local.set $2 end - local.get $2 local.get $1 - i32.store offset=12 + i32.const 16 + i32.lt_u local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 local.get $2 - local.get $3 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.const -1 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.shl 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 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/number/I32#toString (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 3872 - i32.lt_s - if - i32.const 36672 - i32.const 36720 - 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/number/itoa32$73 - 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 $2 - br $__inlined_func$~lib/util/number/itoa32$73 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 + if (result i32) local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - 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.tee $1 - i32.const 1 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 i32.shl - local.get $3 i32.add i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - local.get $3 + i32.const 1 i32.add - local.set $5 - loop $while-continue|0 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 10000 - i32.ge_u + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $4 - 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 $5 + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 + i32.const 4 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 + i32.load offset=96 + else + i32.const 0 end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36640 + i32.const 0 + i32.store + i32.const 38208 + i32.const 0 + i32.store + loop $for-loop|0 local.get $0 - i32.const 10 - i32.ge_u + i32.const 23 + i32.lt_u if - local.get $5 - 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 $5 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + i32.const 36640 i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36640 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end local.get $0 - i32.const 48 + i32.const 1 i32.add - i32.store16 + local.set $0 + br $for-loop|0 end + end + i32.const 36640 + i32.const 38212 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36640 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if local.get $3 - if - local.get $2 - 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 $2 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28%29=>void> - block $resolve-unary/Bar - block $resolve-unary/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + local.get $1 + i32.const 16 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.lt_s + local.tee $5 + i32.eq if - i32.const 36672 - i32.const 36720 - i32.const 1 - i32.const 1 + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $resolve-unary/foo + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $resolve-unary/bar + local.tee $0 + if local.get $0 - i32.load offset=4 call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - unreachable - ) - (func $~start - call $start:resolve-unary + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + 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 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + 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 $5 i32) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1892,145 +1787,285 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store local.get $0 - local.get $1 - i32.eq + i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + call $start:resolve-unary + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36640 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$79 - loop $while-continue|1 + local.get $0 + i32.const 36640 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36640 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$79 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:resolve-unary @@ -2598,39 +2633,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#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 3872 - i32.lt_s - if - i32.const 36672 - i32.const 36720 - 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 0 - i32.const 0 - 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 - ) ) diff --git a/tests/compiler/return-unreachable.release.wat b/tests/compiler/return-unreachable.release.wat index 73a0991de9..85d8930589 100644 --- a/tests/compiler/return-unreachable.release.wat +++ b/tests/compiler/return-unreachable.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -38,185 +38,6 @@ (export "test" (func $return-unreachable/test)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1344 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1152 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1216 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$121 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34328 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$121 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1536 - i32.load - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -633,459 +454,193 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1488 - i32.const 389 - i32.const 16 + i32.const 1216 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$121 local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - i32.const 0 - i32.const 1488 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34328 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$121 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and end - local.get $1 - local.get $4 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - 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 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34336 - i32.const 0 - i32.store - i32.const 35904 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34336 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34336 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34336 - i32.const 35908 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34336 - global.set $~lib/rt/tlsf/ROOT + 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/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34328 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $invalid end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 + return end + return end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + return end - global.get $~lib/rt/itcms/visitCount + local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34328 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34328 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1488 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - global.set $~lib/rt/itcms/state + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1155,63 +710,304 @@ i32.load offset=4 i32.const -1 local.get $1 - i32.shl - i32.and + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - if (result i32) + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1488 - i32.const 347 - i32.const 18 + i32.const 1216 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1545,44 +1341,338 @@ 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 + 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 + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34328 + 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 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34328 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - i32.const 20 - i32.sub i32.load offset=4 - i32.const 3 + local.tee $1 + i32.const -4 i32.and - local.tee $0 + global.set $~lib/rt/itcms/iter global.get $~lib/rt/itcms/white i32.eqz - i32.eq + local.get $1 + i32.const 3 + i32.and + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34328 + 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/state - i32.const 1 - i32.eq + global.get $~lib/rt/itcms/total local.get $0 - i32.const 3 - i32.eq + i32.load + i32.const -4 i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34328 + i32.ge_u if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) (func $return-unreachable/test (param $0 i32) (result i32) (local $1 i32) @@ -1692,94 +1782,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - 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 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - 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.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34328 - 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 - ) ) diff --git a/tests/compiler/return.release.wat b/tests/compiler/return.release.wat index 4509ebf226..6bc1ea50aa 100644 --- a/tests/compiler/return.release.wat +++ b/tests/compiler/return.release.wat @@ -1,7 +1,7 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) @@ -14,10 +14,6 @@ (export "memory" (memory $0)) (export "testVoidReturnFunction" (func $export:return/testVoidReturnFunction)) (start $~start) - (func $start:return~anonymous|0 - ) - (func $return/testVoidReturn (param $0 i32) - ) (func $~start global.get $~lib/memory/__stack_pointer i32.const 4 @@ -48,6 +44,10 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $start:return~anonymous|0 + ) + (func $return/testVoidReturn (param $0 i32) + ) (func $export:return/testVoidReturnFunction (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/rt/alloc-large-memory.release.wat b/tests/compiler/rt/alloc-large-memory.release.wat index 39974839b1..05d01619c0 100644 --- a/tests/compiler/rt/alloc-large-memory.release.wat +++ b/tests/compiler/rt/alloc-large-memory.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func (param i32 i32))) (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32 i32 i64))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i64))) (type $4 (func (param i32))) (type $5 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -160,6 +160,134 @@ end end ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -520,134 +648,6 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/memory/heap.alloc (param $0 i32) (local $1 i32) (local $2 i32) diff --git a/tests/compiler/rt/finalize.release.wat b/tests/compiler/rt/finalize.release.wat index 572e54bcb1..8dbd26236c 100644 --- a/tests/compiler/rt/finalize.release.wat +++ b/tests/compiler/rt/finalize.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) (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)) @@ -37,133 +37,363 @@ (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$112 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34280 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1120 - i32.const 132 - i32.const 16 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 + i32.const 34280 + 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 34280 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$112 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34280 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + 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 @@ -626,119 +856,90 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (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 + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -779,376 +980,203 @@ i32.const 0 i32.store offset=4 i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34288 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34288 - i32.const 35860 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34288 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34280 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34280 - 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 34280 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.add + local.set $1 + br $for-loop|1 end end - i32.const 10 - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + end + i32.const 34288 + i32.const 35860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1382,34 +1410,6 @@ memory.fill local.get $0 ) - (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 - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) (func $~start (local $0 i32) (local $1 i32) diff --git a/tests/compiler/rt/flags.release.wat b/tests/compiler/rt/flags.release.wat index c0b2f9cf66..5935c9e5e9 100644 --- a/tests/compiler/rt/flags.release.wat +++ b/tests/compiler/rt/flags.release.wat @@ -1,7 +1,7 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data $0 (i32.const 1036) "<") @@ -33,6 +33,9 @@ i32.add i32.load ) + (func $~start + call $start:rt/flags + ) (func $start:rt/flags block $folding-inner0 i32.const 4 @@ -284,7 +287,4 @@ call $~lib/builtins/abort unreachable ) - (func $~start - call $start:rt/flags - ) ) diff --git a/tests/compiler/rt/issue-2719.release.wat b/tests/compiler/rt/issue-2719.release.wat index 04f4fe56f4..82735386cb 100644 --- a/tests/compiler/rt/issue-2719.release.wat +++ b/tests/compiler/rt/issue-2719.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -34,132 +34,347 @@ (data $9 (i32.const 1504) "\05\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/visitRoots + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$119 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34296 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34296 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1120 - i32.const 132 - i32.const 16 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 + i32.const 34296 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34296 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34296 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 @@ -623,459 +838,105 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/issue-2719/issue2719_T + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid + end + return + end + return + end + return + end + local.get $0 i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__visit + return end + return end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + unreachable ) - (func $~lib/rt/tlsf/initialize + (func $rt/issue-2719/issue2719_T#constructor (result i32) (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 + 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 1528 i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34304 - i32.const 0 - i32.store - i32.const 35872 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34304 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34304 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34304 - i32.const 35876 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34304 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34296 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34296 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34296 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.store + global.get $~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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1528 + 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 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + 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 + local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + local.get $0 i32.const 0 - global.set $~lib/rt/itcms/state + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 0 + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1119,89 +980,328 @@ local.get $2 i32.const 7 i32.sub - local.set $2 + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34304 + i32.const 0 + i32.store + i32.const 35872 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34304 + i32.const 35876 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.const 16 - i32.lt_u local.get $2 - i32.const 23 - i32.lt_u + i32.wrap_i64 + i32.const -16 i32.and - i32.eqz + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $0 - local.get $2 + local.get $1 + local.get $4 i32.const 2 - i32.shl + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 i32.add - i32.load offset=4 - i32.const -1 + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 - i32.shl - i32.and + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - if (result i32) + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1519,34 +1619,6 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $rt/issue-2719/issue2719_T - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) (func $~start (local $0 i32) (local $1 i32) @@ -1703,76 +1775,4 @@ call $~lib/builtins/abort unreachable ) - (func $rt/issue-2719/issue2719_T#constructor (result i32) - (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 1528 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - 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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1528 - 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 0 - i32.const 0 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/rt/runtime-incremental-export.release.wat b/tests/compiler/rt/runtime-incremental-export.release.wat index 9e2243adaf..422cd0bc5a 100644 --- a/tests/compiler/rt/runtime-incremental-export.release.wat +++ b/tests/compiler/rt/runtime-incremental-export.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) (type $7 (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)) @@ -42,190 +42,6 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1520 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34356 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - ) - (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 - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/toSpace - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 1568 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - i32.const 1572 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $1 - 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 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -250,163 +66,423 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 34356 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + local.tee $1 + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34356 + 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 -2 - local.get $2 - i32.rotl + i32.const -4 i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34356 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -642,119 +718,209 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34356 + i32.lt_u + i32.and + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 + i32.const 1120 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $3 - local.get $1 + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + call $~lib/builtins/abort + unreachable + end + 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 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return end - else local.get $0 - i32.const 1572 - i32.add + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.gt_u + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -836,393 +1002,396 @@ i32.const 34368 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - i32.const 34356 - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34356 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34356 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34356 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - i32.const 10 - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u + (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 + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 4 - i32.shr_u - local.set $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 else - local.get $1 - i32.const 536870910 - i32.lt_u + local.get $2 + i32.const 1568 + i32.load + i32.gt_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 + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 2 + i32.shl + i32.const 1572 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 local.get $1 - i32.const 16 - i32.lt_u + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 local.get $2 - i32.const 23 - i32.lt_u + 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 + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34356 + 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 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add + i32.const 20 + i32.sub + local.tee $1 i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl + i32.const 3 i32.and - local.tee $1 - if (result i32) + i32.const 3 + i32.ne + if + i32.const 1520 + i32.const 1120 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (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 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1456 + i32.const 1120 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + 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 + i32.or + i32.store offset=4 local.get $1 - i32.ctz local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 + i32.store offset=8 local.get $2 - i32.const 1 - i32.add - i32.shl + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 end + local.get $0 ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1538,116 +1707,6 @@ 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 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 1456 - i32.const 1120 - i32.const 338 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - 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 - 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 - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 1520 - i32.const 1120 - i32.const 352 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) (func $~lib/rt/itcms/__collect global.get $~lib/rt/itcms/state i32.const 0 @@ -1683,63 +1742,4 @@ i32.add global.set $~lib/rt/itcms/threshold ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34356 - 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 - ) ) diff --git a/tests/compiler/rt/runtime-minimal-export.release.wat b/tests/compiler/rt/runtime-minimal-export.release.wat index 01af59efdc..dbea43d114 100644 --- a/tests/compiler/rt/runtime-minimal-export.release.wat +++ b/tests/compiler/rt/runtime-minimal-export.release.wat @@ -33,6 +33,52 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/tcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/tcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/toSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/tcms/white + i32.eqz + 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 $0 + local.get $1 + i32.store offset=8 + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -425,134 +471,199 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/rt/tcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 1476 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 101 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1184 - i32.const 382 - i32.const 14 + i32.const 1120 + i32.const 105 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + 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 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1184 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1184 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1184 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.and local.tee $1 - i32.const 0 - i32.le_s if (result i32) - i32.const 1 + local.get $0 local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else i32.const 0 end @@ -619,133 +730,272 @@ i32.const 1488 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.const 256 - i32.lt_u + i64.extend_i32_u + i64.lt_u if - local.get $1 + i32.const 0 + i32.const 1184 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 i32.const 4 - i32.shr_u - local.set $1 - else + i32.add local.get $1 - i32.const 536870910 - i32.lt_u + i32.gt_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 + i32.const 0 + i32.const 1184 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $3 local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 i32.sub - local.set $2 + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1184 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.const 16 - i32.lt_u local.get $2 - i32.const 23 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/tcms/__visit + return + end + unreachable + ) + (func $~start + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + 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 + 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 + global.set $~lib/rt/tcms/toSpace + ) + (func $~lib/rt/tcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1184 - i32.const 334 - i32.const 14 + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 1376 + i32.const 1120 + i32.const 195 + i32.const 5 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 local.get $0 + global.get $~lib/rt/tcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - local.tee $1 - if (result i32) + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + ) + (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 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1280 + i32.const 1120 + i32.const 181 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 local.get $1 - i32.ctz local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 + i32.store offset=8 local.get $2 - i32.const 1 - i32.add - i32.shl + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 end + local.get $0 ) (func $~lib/rt/tcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1016,159 +1266,6 @@ i32.const 20 i32.add ) - (func $~lib/rt/tcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 1476 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 101 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 105 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - ) - (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 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 1280 - i32.const 1120 - i32.const 181 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tcms/Object#unlink - global.get $~lib/rt/tcms/pinSpace - local.tee $3 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $3 - i32.const 3 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - 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 - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 1376 - i32.const 1120 - i32.const 195 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tcms/Object#unlink - global.get $~lib/rt/tcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/tcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - ) (func $~lib/rt/tcms/__collect (local $0 i32) (local $1 i32) @@ -1375,101 +1472,4 @@ local.get $3 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 - return - end - global.get $~lib/rt/tcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - call $~lib/rt/tcms/Object#unlink - global.get $~lib/rt/tcms/toSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/tcms/white - i32.eqz - 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 $0 - local.get $1 - i32.store offset=8 - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/tcms/__visit - return - end - unreachable - ) - (func $~start - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - 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 - 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 - global.set $~lib/rt/tcms/toSpace - ) ) diff --git a/tests/compiler/rt/runtime-stub-export.release.wat b/tests/compiler/rt/runtime-stub-export.release.wat index 87a8d00073..639ae34c0b 100644 --- a/tests/compiler/rt/runtime-stub-export.release.wat +++ b/tests/compiler/rt/runtime-stub-export.release.wat @@ -1,9 +1,9 @@ (module (type $0 (func)) (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) (type $3 (func (param i32) (result i32))) - (type $4 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 1168)) @@ -20,6 +20,15 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~start + i32.const 1196 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__unpin (param $0 i32) + ) + (func $~lib/rt/stub/__pin (param $0 i32) (result i32) + local.get $0 + ) (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -128,15 +137,6 @@ i32.const 16 i32.add ) - (func $~lib/rt/stub/__pin (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__unpin (param $0 i32) - ) (func $~lib/rt/stub/__collect ) - (func $~start - i32.const 1196 - global.set $~lib/rt/stub/offset - ) ) diff --git a/tests/compiler/simd.release.wat b/tests/compiler/simd.release.wat index 0a130301c1..4194c78220 100644 --- a/tests/compiler/simd.release.wat +++ b/tests/compiler/simd.release.wat @@ -2,22 +2,22 @@ (type $0 (func (param i32))) (type $1 (func)) (type $2 (func (param i32 i32 i32) (result v128))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32) (result i32))) - (type $9 (func (param v128) (result v128))) - (type $10 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) - (type $11 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $7 (func (param i32) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $10 (func (param i64) (result v128))) + (type $11 (func (param i64 i64) (result v128))) (type $12 (func (param i32 i32 i32 i32) (result v128))) - (type $13 (func (param i64) (result v128))) - (type $14 (func (param i64 i64) (result v128))) - (type $15 (func (param f32 f32 f32) (result v128))) - (type $16 (func (param f32 f32 f32 f32) (result v128))) - (type $17 (func (param f64) (result v128))) - (type $18 (func (param f64 f64) (result v128))) + (type $13 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $14 (func (param f64) (result v128))) + (type $15 (func (param f64 f64) (result v128))) + (type $16 (func (param f32 f32 f32) (result v128))) + (type $17 (func (param f32 f32 f32 f32) (result v128))) + (type $18 (func (param v128) (result v128))) (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)) @@ -65,182 +65,341 @@ (export "vec" (global $simd/vec)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace + memory.size local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.ne + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34384 + i32.const 0 + i32.store + i32.const 35952 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 + i32.const 2 + i32.shl + i32.const 34384 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 i32.const 16 - call $~lib/builtins/abort - unreachable + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34384 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end end local.get $0 - i32.const 20 + i32.const 1 i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and local.set $0 - br $while-continue|0 + br $for-loop|0 end end + i32.const 34384 + i32.const 35956 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34384 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end + i32.const 1104 + i32.const 1440 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + 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.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 local.get $0 - i32.load offset=4 - i32.const -4 - i32.and + i32.load offset=1568 + memory.size local.tee $1 - i32.eqz + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34380 - i32.lt_u - i32.and - i32.eqz + local.get $2 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1168 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$132 end local.get $0 - i32.load offset=8 - local.tee $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 i32.eqz if i32.const 0 - i32.const 1168 - i32.const 132 + i32.const 1440 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - 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 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + 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 $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1440 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock else local.get $1 - i32.const 1584 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end + local.get $4 + i32.const -2 + i32.and + i32.store local.get $1 - i32.const 2 - i32.shl - i32.const 1588 + i32.const 4 i32.add + local.get $1 i32.load - i32.const 32 + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 i32.and + i32.store end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 + local.get $1 + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 - global.get $~lib/rt/itcms/white + i32.const 34380 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 + i32.const 4 + i32.sub + local.set $1 local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 + i32.const 15 i32.and - i32.or - i32.store offset=4 - local.get $2 + i32.const 1 local.get $0 - i32.store offset=8 + 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 562 + 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/__visit (param $0 i32) local.get $0 @@ -658,909 +817,1314 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 + i32.const 1168 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34380 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 end - else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=8 + local.tee $2 + i32.eqz if i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 + i32.const 1168 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end + 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 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1584 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1588 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - 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 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + 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/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34384 - i32.const 0 - i32.store - i32.const 35952 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34384 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34384 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + call $~lib/array/Array~visit + return end + local.get $0 + call $~lib/array/Array~visit + return end - i32.const 34384 - i32.const 35956 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34384 - global.set $~lib/rt/tlsf/ROOT + unreachable ) - (func $~lib/rt/tlsf/__free (param $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.const 34380 + local.get $1 + i32.const 256 i32.lt_u if - return + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1440 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.const 15 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl i32.and - i32.const 1 - local.get $0 - select + local.tee $1 if (result i32) - i32.const 1 - else + local.get $0 local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 i32.load + i32.const -1 + local.get $2 i32.const 1 + i32.add + i32.shl i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1440 - i32.const 562 - i32.const 3 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - i32.load + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34380 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if i32.const 0 - i32.const 1168 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 34380 + 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 - 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 - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - end i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 + global.set $~lib/rt/itcms/threshold end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT + i32.const 32 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 + i32.store offset=12 local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + i32.const 16 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 local.get $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 1104 - i32.const 1440 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 local.get $0 local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - 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.add - i32.const 1 - i32.sub - else - local.get $3 - end - else - local.get $3 - end - i32.const 4 - local.get $0 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - 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 - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total local.get $1 i32.load i32.const -4 i32.and - i32.gt_u + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.store align=1 + local.get $0 + ) + (func $~lib/array/Array~visit (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 1612 + i32.lt_s if - i32.const 0 - i32.const 1440 - i32.const 501 - i32.const 14 + i32.const 34400 + i32.const 34448 + 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.store local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 i32.load - local.set $4 - local.get $3 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1440 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $2 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - local.get $4 - i32.const 2 - i32.and - i32.or + global.set $~lib/memory/__stack_pointer + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 v128) + (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1612 + 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 34380 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 i32.store - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - local.get $2 + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.const 1 - i32.or + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 1056 + v128.load align=1 + v128.store align=1 local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $4 - i32.const -2 - i32.and i32.store - local.get $1 i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and + call $~lib/rt/itcms/__new + local.tee $4 + local.get $3 i32.store - end - local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step + local.get $3 + if + local.get $4 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $3 + i32.const 20 + i32.sub + local.tee $5 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $4 + i32.const 20 i32.sub - local.set $1 - global.get $~lib/rt/itcms/state + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white i32.eqz + i32.eq if - global.get $~lib/rt/itcms/total + local.get $5 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + end end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - i32.const 32 - call $~lib/rt/tlsf/allocateBlock - local.tee $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $0 - local.get $1 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - v128.store align=1 - local.get $0 - ) - (func $simd/test_v128 - (local $0 i32) - (local $1 v128) - 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/allocateBlock - i32.const 4 + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.const 16 + i32.store offset=8 + local.get $4 + i32.const 1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=12 + i32.eqz + if + i32.const 1296 + i32.const 1504 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + v128.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32x4.extract_lane 0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 + global.set $simd/vec + call $simd/test_v128 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 2 + i32.store8 offset=1 + local.get $0 + i32.const 3 + i32.store8 offset=2 + local.get $0 + i32.const 4 + i32.store8 offset=3 + local.get $0 + i32.const 5 + i32.store8 offset=4 + local.get $0 + i32.const 6 + i32.store8 offset=5 + local.get $0 + i32.const 7 + i32.store8 offset=6 + local.get $0 + i32.const 255 + i32.store8 offset=7 + local.get $0 + v128.load8x8_s align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 609 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load8x8_u align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 614 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store16 + local.get $0 + i32.const 2 + i32.store16 offset=2 + local.get $0 + i32.const 3 + i32.store16 offset=4 + local.get $0 + i32.const 65535 + i32.store16 offset=6 + local.get $0 + v128.load16x4_s align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 790 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load16x4_u align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 795 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store + local.get $0 + i32.const -1 + i32.store offset=4 + local.get $0 + v128.load32x2_s align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 862 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load32x2_u align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 867 + i32.const 5 + 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 + return + end + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34380 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34380 + 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 + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $simd/test_vars_i8x16_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) + v128.const i32x4 0x03000100 0x07000504 0x0b0a0908 0x000e0d0c + local.get $0 + i8x16.replace_lane 2 + local.get $1 + i8x16.replace_lane 6 + local.get $2 + i8x16.replace_lane 15 + ) + (func $simd/test_vars_i8x16_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) (param $15 i32) (result v128) + local.get $0 + i8x16.splat + local.get $1 + i8x16.replace_lane 1 + local.get $2 + i8x16.replace_lane 2 + local.get $3 + i8x16.replace_lane 3 + local.get $4 + i8x16.replace_lane 4 + local.get $5 + i8x16.replace_lane 5 + local.get $6 + i8x16.replace_lane 6 + local.get $7 + i8x16.replace_lane 7 + local.get $8 + i8x16.replace_lane 8 + local.get $9 + i8x16.replace_lane 9 + local.get $10 + i8x16.replace_lane 10 + local.get $11 + i8x16.replace_lane 11 + local.get $12 + i8x16.replace_lane 12 + local.get $13 + i8x16.replace_lane 13 + local.get $14 + i8x16.replace_lane 14 + local.get $15 + i8x16.replace_lane 15 + ) + (func $simd/test_vars_i64x2_partial (param $0 i64) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + i64x2.replace_lane 1 + ) + (func $simd/test_vars_i64x2_full (param $0 i64) (param $1 i64) (result v128) + local.get $0 + i64x2.splat + local.get $1 + i64x2.replace_lane 1 + ) + (func $simd/test_vars_i32x4_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + i32x4.replace_lane 1 + local.get $1 + i32x4.replace_lane 2 + local.get $2 + i32x4.replace_lane 3 + ) + (func $simd/test_vars_i32x4_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result v128) + local.get $0 + i32x4.splat + local.get $1 + i32x4.replace_lane 1 + local.get $2 + i32x4.replace_lane 2 + local.get $3 + i32x4.replace_lane 3 + ) + (func $simd/test_vars_i16x8_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) + v128.const i32x4 0x00010000 0x00030000 0x00050000 0x00000006 + local.get $0 + i16x8.replace_lane 2 + local.get $1 + i16x8.replace_lane 4 + local.get $2 + i16x8.replace_lane 7 + ) + (func $simd/test_vars_i16x8_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result v128) + local.get $0 + i16x8.splat + local.get $1 + i16x8.replace_lane 1 + local.get $2 + i16x8.replace_lane 2 + local.get $3 + i16x8.replace_lane 3 + local.get $4 + i16x8.replace_lane 4 + local.get $5 + i16x8.replace_lane 5 + local.get $6 + i16x8.replace_lane 6 + local.get $7 + i16x8.replace_lane 7 + ) + (func $simd/test_vars_f64x2_partial (param $0 f64) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + f64x2.replace_lane 1 + ) + (func $simd/test_vars_f64x2_full (param $0 f64) (param $1 f64) (result v128) + local.get $0 + f64x2.splat + local.get $1 + f64x2.replace_lane 1 + ) + (func $simd/test_vars_f32x4_partial (param $0 f32) (param $1 f32) (param $2 f32) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + f32x4.replace_lane 1 + local.get $1 + f32x4.replace_lane 2 + local.get $2 + f32x4.replace_lane 3 + ) + (func $simd/test_vars_f32x4_full (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result v128) + local.get $0 + f32x4.splat + local.get $1 + f32x4.replace_lane 1 + local.get $2 + f32x4.replace_lane 2 + local.get $3 + f32x4.replace_lane 3 + ) + (func $simd/test_v128 + (local $0 i32) + (local $1 v128) + 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/allocateBlock + i32.const 4 i32.add local.tee $0 local.get $0 @@ -1698,160 +2262,7 @@ i32.const 42 i32.store local.get $0 - v128.load32_zero - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 111 - i32.const 5 - call $~lib/builtins/abort - unreachable - 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/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i64.const 42 - i64.store - local.get $0 - v128.load64_zero - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 121 - i32.const 5 - call $~lib/builtins/abort - unreachable - 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/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 42 - i32.store - local.get $0 - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - v128.load32_lane 0 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 192 - i32.const 5 - call $~lib/builtins/abort - unreachable - 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/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 42 - i32.store - local.get $0 - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - v128.load32_lane 0 - local.tee $1 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 200 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v128.load8_lane 0 - local.tee $1 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 202 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v128.load16_lane 0 - local.tee $1 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 204 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v128.load32_lane 0 - local.tee $1 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 206 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v128.load64_lane 0 + v128.load32_zero v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 i8x16.eq i8x16.all_true @@ -1859,7 +2270,7 @@ if i32.const 0 i32.const 1552 - i32.const 208 + i32.const 111 i32.const 5 call $~lib/builtins/abort unreachable @@ -1877,650 +2288,239 @@ i32.const 4 i32.add local.tee $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store32_lane 0 + i64.const 42 + i64.store local.get $0 - i32.load - i32.const 42 - i32.ne + v128.load64_zero + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 215 + i32.const 121 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store8_lane 4 + 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/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store local.get $0 - i32.load8_s - i32.const 43 - i32.ne + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.load32_lane 0 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 217 + i32.const 192 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store16_lane 4 + 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/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store local.get $0 - i32.load16_s - i32.const 44 - i32.ne + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.load32_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 219 + i32.const 200 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store32_lane 1 - local.get $0 - i32.load - i32.const 43 - i32.ne + local.get $1 + v128.load8_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 221 + i32.const 202 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store64_lane offset=1 1 - local.get $0 - i64.load offset=1 - i64.const 44 - i64.ne + local.get $1 + v128.load16_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 223 + i32.const 204 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/tlsf/__free - ) - (func $simd/reexport (param $0 v128) (result v128) - local.get $0 - local.get $0 - i32x4.mul - ) - (func $simd/test_vars_i8x16_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) - v128.const i32x4 0x03000100 0x07000504 0x0b0a0908 0x000e0d0c - local.get $0 - i8x16.replace_lane 2 - local.get $1 - i8x16.replace_lane 6 - local.get $2 - i8x16.replace_lane 15 - ) - (func $simd/test_vars_i8x16_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) (param $15 i32) (result v128) - local.get $0 - i8x16.splat - local.get $1 - i8x16.replace_lane 1 - local.get $2 - i8x16.replace_lane 2 - local.get $3 - i8x16.replace_lane 3 - local.get $4 - i8x16.replace_lane 4 - local.get $5 - i8x16.replace_lane 5 - local.get $6 - i8x16.replace_lane 6 - local.get $7 - i8x16.replace_lane 7 - local.get $8 - i8x16.replace_lane 8 - local.get $9 - i8x16.replace_lane 9 - local.get $10 - i8x16.replace_lane 10 - local.get $11 - i8x16.replace_lane 11 - local.get $12 - i8x16.replace_lane 12 - local.get $13 - i8x16.replace_lane 13 - local.get $14 - i8x16.replace_lane 14 - local.get $15 - i8x16.replace_lane 15 - ) - (func $simd/test_vars_i16x8_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) - v128.const i32x4 0x00010000 0x00030000 0x00050000 0x00000006 - local.get $0 - i16x8.replace_lane 2 - local.get $1 - i16x8.replace_lane 4 - local.get $2 - i16x8.replace_lane 7 - ) - (func $simd/test_vars_i16x8_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result v128) - local.get $0 - i16x8.splat - local.get $1 - i16x8.replace_lane 1 - local.get $2 - i16x8.replace_lane 2 - local.get $3 - i16x8.replace_lane 3 - local.get $4 - i16x8.replace_lane 4 - local.get $5 - i16x8.replace_lane 5 - local.get $6 - i16x8.replace_lane 6 - local.get $7 - i16x8.replace_lane 7 - ) - (func $simd/test_vars_i32x4_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - local.get $0 - i32x4.replace_lane 1 - local.get $1 - i32x4.replace_lane 2 - local.get $2 - i32x4.replace_lane 3 - ) - (func $simd/test_vars_i32x4_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result v128) - local.get $0 - i32x4.splat - local.get $1 - i32x4.replace_lane 1 - local.get $2 - i32x4.replace_lane 2 - local.get $3 - i32x4.replace_lane 3 - ) - (func $simd/test_vars_i64x2_partial (param $0 i64) (result v128) - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - local.get $0 - i64x2.replace_lane 1 - ) - (func $simd/test_vars_i64x2_full (param $0 i64) (param $1 i64) (result v128) - local.get $0 - i64x2.splat - local.get $1 - i64x2.replace_lane 1 - ) - (func $simd/test_vars_f32x4_partial (param $0 f32) (param $1 f32) (param $2 f32) (result v128) - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - local.get $0 - f32x4.replace_lane 1 - local.get $1 - f32x4.replace_lane 2 - local.get $2 - f32x4.replace_lane 3 - ) - (func $simd/test_vars_f32x4_full (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result v128) - local.get $0 - f32x4.splat - local.get $1 - f32x4.replace_lane 1 - local.get $2 - f32x4.replace_lane 2 - local.get $3 - f32x4.replace_lane 3 - ) - (func $simd/test_vars_f64x2_partial (param $0 f64) (result v128) - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - local.get $0 - f64x2.replace_lane 1 - ) - (func $simd/test_vars_f64x2_full (param $0 f64) (param $1 f64) (result v128) - local.get $0 - f64x2.splat local.get $1 - f64x2.replace_lane 1 - ) - (func $~lib/array/Array~visit (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 1612 - i32.lt_s + v128.load32_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if - i32.const 34400 - i32.const 34448 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1552 + i32.const 206 + i32.const 5 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.store + local.get $1 + v128.load64_lane 0 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 208 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer + 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/allocateBlock i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - 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 - call $~lib/array/Array~visit - return + local.tee $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store32_lane 0 + local.get $0 + i32.load + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 215 + i32.const 5 + call $~lib/builtins/abort + unreachable end - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 v128) - (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1612 - 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 34380 - 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 - global.get $~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 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store8_lane 4 + local.get $0 + i32.load8_s + i32.const 43 + i32.ne + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.const 1056 - v128.load align=1 - v128.store align=1 - local.get $3 - i32.store - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $4 - local.get $3 - i32.store - local.get $3 - if - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $3 - i32.const 20 - i32.sub - local.tee $5 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $4 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $5 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $1 - i32.const 3 - i32.eq - i32.and - if - local.get $5 - call $~lib/rt/itcms/Object#makeGray - end - end - end - end - local.get $4 - local.get $3 - i32.store offset=4 - local.get $4 - i32.const 16 - i32.store offset=8 - local.get $4 - i32.const 1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.const 217 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store16_lane 4 + local.get $0 + i32.load16_s + i32.const 44 + i32.ne + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=12 - i32.eqz - if - i32.const 1296 - i32.const 1504 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - v128.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32x4.extract_lane 0 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 5 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 - global.set $simd/vec - call $simd/test_v128 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 2 - i32.store8 offset=1 - local.get $0 - i32.const 3 - i32.store8 offset=2 - local.get $0 - i32.const 4 - i32.store8 offset=3 - local.get $0 + i32.const 1552 + i32.const 219 i32.const 5 - i32.store8 offset=4 - local.get $0 - i32.const 6 - i32.store8 offset=5 - local.get $0 - i32.const 7 - i32.store8 offset=6 - local.get $0 - i32.const 255 - i32.store8 offset=7 - local.get $0 - v128.load8x8_s align=1 - v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 609 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - v128.load8x8_u align=1 - v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 614 - i32.const 5 - call $~lib/builtins/abort - unreachable - 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/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 1 - i32.store16 - local.get $0 - i32.const 2 - i32.store16 offset=2 - local.get $0 - i32.const 3 - i32.store16 offset=4 - local.get $0 - i32.const 65535 - i32.store16 offset=6 - local.get $0 - v128.load16x4_s align=2 - v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 790 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - v128.load16x4_u align=2 - v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 795 - i32.const 5 - call $~lib/builtins/abort - unreachable - 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/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 1 - i32.store - local.get $0 - i32.const -1 - i32.store offset=4 - local.get $0 - v128.load32x2_s align=4 - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 862 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - v128.load32x2_u align=4 - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 867 - i32.const 5 - 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 - return + call $~lib/builtins/abort + unreachable end - i32.const 34400 - i32.const 34448 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store32_lane 1 + local.get $0 + i32.load + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 221 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store64_lane offset=1 1 + local.get $0 + i64.load offset=1 + i64.const 44 + i64.ne + if + i32.const 0 + i32.const 1552 + i32.const 223 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + ) + (func $simd/reexport (param $0 v128) (result v128) + local.get $0 + local.get $0 + i32x4.mul ) ) diff --git a/tests/compiler/std/array-access.release.wat b/tests/compiler/std/array-access.release.wat index d9ec8e7386..b24b426a6e 100644 --- a/tests/compiler/std/array-access.release.wat +++ b/tests/compiler/std/array-access.release.wat @@ -221,7 +221,7 @@ local.get $2 i32.eqz ) - (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -255,42 +255,12 @@ 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 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=12 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.le_u - if - i32.const 1056 - i32.const 1120 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + i32.shr_u global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -308,7 +278,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -343,11 +313,7 @@ local.get $0 i32.store local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + call $~lib/string/String#startsWith global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -365,7 +331,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -379,7 +345,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -390,19 +356,33 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + 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=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.get $0 i32.store local.get $0 - call $~lib/string/String#startsWith + 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.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -418,7 +398,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -463,11 +443,7 @@ local.get $0 i32.store local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + call $~lib/string/String#startsWith global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -485,7 +461,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) + (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -499,7 +475,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -510,29 +486,53 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 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 + i32.store + global.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 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.load offset=12 i32.const 1 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $0 + i32.le_u + if + i32.const 1056 + i32.const 1120 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/string/String#startsWith + i32.load offset=4 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + 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 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/array-literal.release.wat b/tests/compiler/std/array-literal.release.wat index 4d2e2bfc4d..0f52e76640 100644 --- a/tests/compiler/std/array-literal.release.wat +++ b/tests/compiler/std/array-literal.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func (param i32))) (type $1 (func (param i32 i32 i32))) - (type $2 (func)) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func)) (type $4 (func (result i32))) (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32) (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32) (result i32))) + (type $8 (func (param i32 i32 i32) (result i32))) + (type $9 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 1424)) (global $std/array-literal/i (mut i32) (i32.const 0)) @@ -59,219 +59,6 @@ (data $17 (i32.const 1840) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00B\08\00\00\02\t\00\00 \00\00\00\02A\00\00 \00\00\00\02A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1344 - call $~lib/rt/itcms/__visit - global.get $std/array-literal/emptyArrayI32 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayI8 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayI32 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayRef - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayRefWithCtor - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1200 - call $~lib/rt/itcms/__visit - i32.const 1808 - call $~lib/rt/itcms/__visit - i32.const 1472 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1536 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1536 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$154 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34652 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$154 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1840 - i32.load - i32.gt_u - if - i32.const 1200 - i32.const 1664 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1844 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -296,591 +83,571 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s if - i32.const 0 - i32.const 1744 - i32.const 268 - i32.const 14 + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 1744 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select + i32.lt_s + if + i32.const 1200 + i32.const 1264 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 + i32.const 2 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.store offset=12 end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end 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 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (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 1884 + i32.lt_s if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end + i32.const 34672 + i32.const 34720 + 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.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (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 $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1744 - i32.const 201 - i32.const 14 + i32.const 1472 + i32.const 1536 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - i32.const 0 - i32.const 1744 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 i32.add - local.tee $4 - i32.load local.tee $2 - i32.const 1 - i32.and + i32.const 1073741820 + i32.gt_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add + i32.const 1472 + i32.const 1744 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1744 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1744 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1744 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 i32.const 4 - i32.shr_u + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - i32.const 31 - i32.const 1073741820 local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 + i32.const 4 + i32.add local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.load + i32.const -3 + i32.and + i32.store end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + 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 $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 + local.get $3 i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl + i32.const 3 + i32.and i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) + 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 $1 + i32.const 0 + local.get $0 + memory.fill local.get $1 - i64.extend_i32_u - i64.lt_u + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s if - i32.const 0 - i32.const 1744 - i32.const 382 - i32.const 14 + i32.const 34672 + i32.const 34720 + 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.store local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.load offset=12 + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1744 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1744 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 1200 + i32.const 1264 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s if - return + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.store local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + local.get $0 + i32.load offset=12 + i32.ge_u if + i32.const 1200 + i32.const 1264 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort unreachable end - i32.const 34656 - i32.const 0 - i32.store - i32.const 36224 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34656 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34656 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (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 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 34656 - i32.const 36228 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34656 - global.set $~lib/rt/tlsf/ROOT + 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 $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + i32.store + local.get $2 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $1 + 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/rt/itcms/step (result i32) (local $0 i32) @@ -1142,51 +909,136 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $std/array-literal/Ref#constructor (result i32) + (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 1884 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + 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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + 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 0 + i32.const 0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 256 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 i32.lt_u if - local.get $1 + i32.const 0 + i32.const 1744 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - 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.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1197,407 +1049,338 @@ if i32.const 0 i32.const 1744 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1744 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 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 + local.get $1 + i32.eqz if - i32.const 1472 - i32.const 1536 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1744 + i32.const 201 + i32.const 14 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1472 + i32.const 0 i32.const 1744 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load local.tee $2 - i32.eqz + i32.const 1 + i32.and if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 + local.get $0 local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and i32.eqz if i32.const 0 i32.const 1744 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1744 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1744 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $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 $1 - i32.load offset=8 - local.set $3 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 - local.get $2 - local.get $3 - 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 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total + i32.shl local.get $2 - i32.const 20 i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + i32.const 2 + i32.shl + i32.add local.get $1 - i32.eqz - if - return - end + i32.store offset=96 local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 295 - i32.const 14 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 295 + i32.const 14 call $~lib/builtins/abort unreachable end @@ -1643,103 +1426,137 @@ end end ) - (func $~lib/array/Array~visit (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 1884 - i32.lt_s - if - i32.const 34672 - i32.const 34720 - 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.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array~visit (param $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $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 - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 + block $__inlined_func$~lib/rt/itcms/Object#unlink$154 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34652 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$154 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 + local.tee $1 i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 + i32.le_u + if (result i32) + i32.const 1 + else local.get $1 - local.get $2 - i32.lt_u + i32.const 1840 + i32.load + i32.gt_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 + i32.const 1200 + i32.const 1664 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 2 + i32.shl + i32.const 1844 + i32.add + i32.load + i32.const 32 + i32.and end - global.get $~lib/memory/__stack_pointer + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + 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/__visit_members (param $0 i32) block $invalid @@ -1792,10 +1609,9 @@ end unreachable ) - (func $~start - call $start:std/array-literal - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1817,20 +1633,123 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.load offset=8 + local.tee $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1808 + i32.const 1264 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + local.get $2 + i32.shl + local.tee $1 + local.get $1 + local.get $3 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $1 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $1 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$149 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $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 1884 i32.lt_s if i32.const 34672 @@ -1851,12 +1770,30 @@ i32.load offset=12 i32.ge_u if - i32.const 1200 - i32.const 1264 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1200 + i32.const 1264 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -1865,13 +1802,15 @@ local.get $0 i32.load offset=4 i32.add - i32.load8_s + local.get $2 + i32.store8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1898,12 +1837,30 @@ i32.load offset=12 i32.ge_u if - i32.const 1200 - i32.const 1264 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1200 + i32.const 1264 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -1914,15 +1871,15 @@ i32.const 2 i32.shl i32.add - i32.load + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $std/array-literal/RefWithCtor#constructor (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1942,320 +1899,423 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - local.tee $3 - local.get $2 - i32.shr_u - i32.gt_u + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if local.get $1 - i32.const 1073741820 - local.get $2 + i32.const 4 i32.shr_u - i32.gt_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 1808 - i32.const 1264 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$149 - i32.const 1073741820 - local.get $3 - i32.const 1 - i32.shl - local.tee $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.const 8 local.get $1 + i32.const 1 + i32.const 27 local.get $1 - i32.const 8 - i32.le_u - select - local.get $2 + i32.clz + i32.sub i32.shl - local.tee $1 - local.get $1 - local.get $3 - i32.lt_u - select - local.tee $3 + 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.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.load + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.tee $2 - i32.const 20 - i32.sub - local.tee $4 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u + i32.eqz if - local.get $4 - local.get $3 - i32.store offset=16 - local.get $2 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 0 + i32.const 1744 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - local.get $3 - local.get $4 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $0 local.get $2 - local.get $3 - local.get $4 - i32.load offset=16 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_u - select - memory.copy + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - local.get $2 - i32.ne + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34656 + i32.const 0 + i32.store + i32.const 36224 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 + i32.const 2 + i32.shl + i32.const 34656 + i32.add + i32.const 0 i32.store offset=4 - local.get $0 - local.get $1 i32.const 0 - call $~lib/rt/itcms/__link + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34656 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $0 - local.get $3 - i32.store offset=8 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34656 + i32.const 36228 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34656 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (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 1884 - i32.lt_s + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1744 + i32.const 382 + i32.const 14 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.store local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.load offset=12 - i32.ge_u + i32.load offset=1568 + local.tee $3 if + local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 0 - i32.lt_s + i32.gt_u if - i32.const 1200 - i32.const 1264 - i32.const 130 - i32.const 22 + i32.const 0 + i32.const 1744 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 0 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else local.get $0 - local.get $3 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $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 1884 - i32.lt_s - if - i32.const 34672 - i32.const 34720 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + i32.const 1572 + i32.add local.get $1 - i32.const 0 - i32.lt_s + i32.gt_u if - i32.const 1200 - i32.const 1264 - i32.const 130 - i32.const 22 + i32.const 0 + i32.const 1744 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - local.get $2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - global.get $~lib/memory/__stack_pointer + 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 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $std/array-literal/Ref#constructor (result i32) + (func $~lib/rt/itcms/visitRoots (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 1884 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - 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 1088 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + global.get $std/array-literal/emptyArrayI32 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRef + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRefWithCtor + local.tee $0 + if local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + call $~lib/rt/itcms/__visit + end + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 1472 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.eqz + local.get $1 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return end - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array~visit (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2278,56 +2338,82 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 local.get $0 i32.load offset=12 - i32.ge_u - if + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 local.get $1 - i32.const 0 - i32.lt_s + local.get $2 + i32.lt_u if - i32.const 1200 - i32.const 1264 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable + 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 - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array~visit (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 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + 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.store local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + call $start:std/array-literal + ) (func $start:std/array-literal (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -2845,90 +2931,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__newArray (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 1884 - i32.lt_s - if - i32.const 34672 - i32.const 34720 - 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 - local.get $1 - i32.shl - local.tee $1 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $3 - i32.store - local.get $2 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - local.get $1 - 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-literal/RefWithCtor#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 1884 - i32.lt_s - if - i32.const 34672 - i32.const 34720 - 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 - i32.const 0 - i32.const 8 - 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 - ) ) diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index 41242782c0..cabde24ae4 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32) (result i32))) (type $3 (func (param i32 i32 i32))) (type $4 (func (param i32 i32 i32 i32) (result i32))) - (type $5 (func (param f32 f32) (result i32))) - (type $6 (func (param f64 f64) (result i32))) + (type $5 (func (param f64 f64) (result i32))) + (type $6 (func (param f32 f32) (result i32))) (type $7 (func (param i32 i32))) (type $8 (func (param i32))) (type $9 (func (param i32 i32 i32 i32))) @@ -14,19 +14,19 @@ (type $12 (func (result f64))) (type $13 (func (param i32 i32 i32 i32 i32 i32))) (type $14 (func (result i32))) - (type $15 (func (param i32 i32 i32) (result f32))) + (type $15 (func (param i32 i64) (result i32))) (type $16 (func (param i32 f64) (result i32))) - (type $17 (func (param i32 i64) (result i32))) - (type $18 (func (param i32 i32 i64))) - (type $19 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $17 (func (param i32 i32 i32) (result f32))) + (type $18 (func (param i32 i32) (result f32))) + (type $19 (func (param i32 i32) (result f64))) (type $20 (func (param i32 i64 i32))) - (type $21 (func (param i32 f32 i32 i32))) - (type $22 (func (param i32 i32) (result f32))) - (type $23 (func (param i32 f32 i32))) - (type $24 (func (param i32 i32) (result f64))) + (type $21 (func (param i32 f32 i32))) + (type $22 (func (param i32 f32 i32 i32))) + (type $23 (func (param i32 i32 i64))) + (type $24 (func (param i32 i64 i64 i32 i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) (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)) @@ -660,1259 +660,1387 @@ (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|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $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|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|20 $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|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $~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 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $start:std/array~anonymous|52 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $start:std/array~anonymous|54) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $std/array/arr - local.tee $0 + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 10032 - call $~lib/rt/itcms/__visit - global.get $std/array/inputStabArr - local.tee $0 + 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 $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + local.get $3 + local.get $5 + memory.copy end - global.get $std/array/outputStabArr - local.tee $0 + 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 $5 + 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/array/Array#get:length (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 16192 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1344 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 2640 - call $~lib/rt/itcms/__visit - i32.const 6416 - call $~lib/rt/itcms/__visit - i32.const 1152 - call $~lib/rt/itcms/__visit - i32.const 8144 - call $~lib/rt/itcms/__visit - i32.const 9200 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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 - global.get $~lib/rt/itcms/iter - i32.eq + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + local.get $1 + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1216 - i32.const 148 - i32.const 30 + i32.const 1344 + i32.const 1104 + i32.const 130 + i32.const 22 call $~lib/builtins/abort unreachable end + local.get $0 local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$731 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 48960 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$731 - end + i32.store local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 + i32.store offset=12 end - global.get $~lib/rt/itcms/toSpace - local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 16000 - i32.load - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 16004 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 + i32.store local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz + i32.load offset=4 + local.get $1 i32.const 2 - local.get $3 - select + i32.shl + i32.add local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 + i32.store 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 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz + (func $std/array/isArraysEqual (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $2 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 return end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount + i32.const 48992 + i32.const 49040 i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/tlsf/removeBlock (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 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 268 - i32.const 14 + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#pop (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 16192 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 270 - i32.const 14 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 0 + i32.le_s if - i32.const 0 - i32.const 1488 - i32.const 284 - i32.const 14 + i32.const 2640 + i32.const 1104 + i32.const 271 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add + i32.const 1 + i32.sub + local.tee $1 i32.const 2 i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (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 $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 201 - i32.const 14 + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - i32.const 0 - i32.const 1488 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.const 4 + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 i32.add + 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 i32.add - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 251 - i32.const 14 + i32.const 48992 + i32.const 49040 + 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 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl + i32.store + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl + i32.store + local.get $0 + i32.load offset=4 local.get $2 - i32.add i32.const 2 i32.shl i32.add local.get $1 - i32.store offset=96 - local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 - i32.const 2 - i32.shl + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 382 - i32.const 14 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=1568 - local.tee $3 + local.get $1 + i32.eq if - local.get $3 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if + global.set $~lib/memory/__stack_pointer + i32.const 1 return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 48960 - i32.const 0 - i32.store - i32.const 50528 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 48960 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl$1 (result i32) + local.get $2 + i32.const 4 + i32.ge_u + if (result i32) + local.get $0 + i32.const 7 + i32.and local.get $1 - i32.const 16 - i32.lt_u + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|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 $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-loop|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.const 4 - i32.shl + i32.load16_u + local.tee $3 local.get $1 - i32.add + i32.load16_u + local.tee $4 + i32.ne + if + local.get $3 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl$1 + end + local.get $0 i32.const 2 - i32.shl - i32.const 48960 i32.add - i32.const 0 - i32.store offset=96 + local.set $0 local.get $1 - i32.const 1 + i32.const 2 i32.add local.set $1 - br $for-loop|1 + br $while-continue|1 end end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 end + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 48960 - i32.const 50532 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 48960 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/__free (param $0 i32) + (func $std/array/Dim#constructor (result i32) + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 48960 - i32.lt_u - if - return + 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 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + 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 0 + i32.const 0 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $0 + return end - global.get $~lib/rt/tlsf/ROOT + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 i32.eqz if - call $~lib/rt/tlsf/initialize + return 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 + i32.eqz if i32.const 0 - i32.const 1488 - i32.const 562 - i32.const 3 + i32.const 1216 + i32.const 295 + i32.const 14 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/itcms/white local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $1 - call $~lib/rt/tlsf/insertBlock + 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 + 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 + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (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 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 + (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 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$736 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 48960 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + br $__inlined_func$~lib/string/String#concat$736 end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.const 48960 - 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 - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - end - i32.const 10 - return + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 0 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else + (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 536870910 - i32.lt_u + i32.const 10000 + i32.ge_u if local.get $1 - i32.const 1 - i32.const 27 + i32.const 10000 + i32.rem_u + local.set $3 local.get $1 - i32.clz + 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 - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + 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 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.const 10 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) local.get $0 - local.get $1 - i32.ctz local.get $2 - i32.const 4 + i32.const 2 + i32.sub + i32.const 1 i32.shl i32.add + local.get $1 i32.const 2 i32.shl + i32.const 7724 i32.add - i32.load offset=96 + i32.load + i32.store else local.get $0 - i32.load - i32.const -1 local.get $2 i32.const 1 - i32.add + i32.sub + i32.const 1 i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + (func $std/array/internalCapacity (param $0 i32) (result 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 16192 + i32.lt_s if - i32.const 1152 - i32.const 1488 - i32.const 461 - i32.const 29 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + 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 2 + i32.shr_s + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/Ref#constructor (param $0 i32) (result i32) + (local $1 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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 12 - i32.le_u + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s if (result i32) - i32.const 12 - else + i32.const 1 local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz if - local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - local.get $3 - i32.const 536870910 - i32.lt_u + unreachable + end + i32.const 48960 + i32.const 0 + i32.store + i32.const 50528 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 48960 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 48960 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 48960 + i32.const 50532 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 48960 + global.set $~lib/rt/tlsf/ROOT + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + 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 $4 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $5 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.tee $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $5 + i32.const 2 + i32.shl + memory.copy + local.get $4 + local.get $5 + i32.add + local.tee $4 + local.get $3 + i32.ne + if + local.get $6 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + memory.copy + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + local.get $5 + i32.sub + 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/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u if (result i32) local.get $3 i32.const 1 @@ -2077,4324 +2205,4308 @@ end local.get $1 ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.ge_u + i32.const 48960 + i32.lt_u if - i32.const 1152 - i32.const 1216 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + 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 16 - i32.add - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + i32.const 15 i32.and - i32.or - i32.store offset=4 + 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 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 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 $1 - i32.const 0 - local.get $0 - memory.fill + i32.const 1 + i32.or + i32.store local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $1 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - return + i32.const 48992 + i32.const 49040 + 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.store local.get $0 + i32.load offset=12 + local.tee $3 i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + i32.const 0 + i32.lt_s if + local.get $2 + local.get $3 + i32.add + local.tee $2 i32.const 0 - i32.const 1216 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 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 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s 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 - local.get $3 - i32.const 3 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 i32.eq - i32.and if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 ) - (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|10 (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|11 (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $1 i32.const 0 - i32.le_s - ) - (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 3 - i32.ge_s - ) - (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 + local.get $1 i32.const 0 - i32.lt_s - ) - (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 i32.gt_s - ) - (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $std/array/i + select + local.tee $2 local.get $0 - i32.add - global.set $std/array/i - ) - (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 7724 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 7724 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 local.get $1 - i32.const 100 - i32.ge_u + local.get $2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz 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 7724 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return end + local.get $3 + i32.eqz + local.get $4 local.get $1 - i32.const 10 - i32.ge_u + i32.const 1 + i32.shl + i32.eq + i32.and 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 7724 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - i32.store - else + global.set $~lib/memory/__stack_pointer 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 + return end - ) - (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - call $~lib/util/number/itoa32 - ) - (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - local.get $0 - f32.convert_i32_s - ) - (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - ) - (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $std/array/i + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 local.get $0 + local.get $3 i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $start:std/array~anonymous|34 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#includes (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store local.get $0 local.get $1 + local.get $2 + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer ) - (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - i32.const 1 - local.get $1 - i32.const 2 - i32.gt_s - local.get $0 - select - ) - (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - i32.const 1 - local.get $1 - i32.const 100 - i32.gt_s + (func $~lib/array/Array#__get (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - select - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 f32) - (local $6 f32) - (local $7 i32) - (local $8 f32) - (local $9 i32) + i32.store local.get $1 - local.get $3 - local.get $2 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + 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 $0 + i32.load offset=4 local.get $1 - i32.sub - i32.const 1 + i32.const 2 + i32.shl i32.add - local.tee $7 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $7 - i32.const 1 - i32.and - local.get $3 - select + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load offset=4 - local.tee $8 - local.set $6 - local.get $3 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $8 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.le_s - if - local.get $5 - local.set $6 - local.get $8 - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $9 - local.get $8 - f32.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $9 - local.get $5 - f32.store offset=4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store offset=4 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end - end + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) + (func $~lib/array/Array#__get (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - local.get $2 - i32.eq + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $1 - return + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + 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 $0 + i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add - f32.load + i32.load + local.tee $0 + i32.store offset=4 local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl + i32.eqz + if + i32.const 6416 + i32.const 1104 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f32) + (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 16192 + i32.lt_s if - loop $while-continue|0 - local.get $2 + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load offset=4 - local.get $6 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $5) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 + i32.ne + br_if $folding-inner0 + local.get $0 local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f32.store + i32.eq + br_if $folding-inner1 + loop $for-loop|0 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load offset=4 - local.get $1 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $5) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + else + i32.const 0 + end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + f64.promote_f32 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + f64.promote_f32 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $3 + f32.ne + br_if $folding-inner0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 i32) - (local $10 i32) - local.get $2 - i32.const 1 + (func $std/array/assertSortedDefault (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $6 - local.get $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11120 + i32.store offset=4 + local.get $0 + i32.const 11120 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $9 - local.get $6 - i32.const 1 + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + i32.const 11856 + call $~lib/array/Array#join + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#reduceRight (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $3 loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.const 0 + i32.ge_s if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $3 i32.const 2 i32.shl - local.tee $10 - local.get $4 i32.add + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $10 - i32.add - f32.load - f32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if + i32.store + i32.const 4 + global.set $~argumentsLength + local.get $2 local.get $4 - local.get $9 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.add + local.get $3 local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - f32.store - local.get $6 + local.get $1 + i32.load + call_indirect (type $4) + local.set $2 + local.get $3 i32.const 1 - i32.add - local.set $6 - br $for-loop|1 + i32.sub + local.set $3 + br $for-loop|0 end end - loop $for-loop|2 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $3 - i32.le_s + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - local.get $4 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $3 i32.const 2 i32.shl i32.add - f32.load - local.set $8 - i32.const 2 + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 global.set $~argumentsLength - local.get $7 - local.get $8 + local.get $2 local.get $5 + local.get $3 + local.get $0 + local.get $1 i32.load - call_indirect (type $5) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 + call_indirect (type $4) + local.set $2 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|2 + 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 + local.get $2 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $3 - i32.xor - local.tee $3 - i32.gt_s - local.get $2 + local.get $0 + i32.load offset=12 + local.tee $5 local.get $3 + local.get $5 i32.lt_s - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 f64) - (local $8 i32) + select + local.set $3 + local.get $4 local.get $1 - local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $5 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + 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.const 2 + i32.shl + i32.add + local.get $4 local.get $2 - local.get $1 - i32.sub - i32.const 1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $5 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + 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 $2 + i32.const 2 + i32.shl i32.add - local.tee $6 local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $5 + i32.add + local.tee $3 + i32.const 0 + local.get $3 + 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 $2 i32.sub - i32.const 1 - i32.and + local.tee $2 + local.get $5 + local.get $1 i32.sub - local.get $6 - i32.const 1 - i32.and - local.get $3 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s select + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.ge_s + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s if - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load offset=8 - local.tee $7 - local.set $5 - local.get $3 - f64.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $7 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.le_s - if - local.get $4 - local.set $5 - local.get $7 - local.set $4 - end - local.get $6 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $8 - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $4 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $7 - f64.store offset=16 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store offset=16 - loop $while-continue|2 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $8 - f64.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $8 - local.get $4 - f64.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store offset=8 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $for-loop|0 + i32.const 1344 + i32.const 1104 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - i32.eq + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $1 - return + i32.const 48992 + i32.const 49040 + 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.store local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (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 16192 + i32.lt_s if - loop $while-continue|0 - local.get $2 + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + call $~lib/array/Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load offset=8 - local.get $6 - f64.load - i32.const 2 - global.set $~argumentsLength - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + 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#slice (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $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 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - local.set $4 - local.get $6 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $6 - local.get $4 - f64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load offset=8 - local.get $1 - f64.load - i32.const 2 - global.set $~argumentsLength - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 - end - end + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select end - local.get $3 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 + 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 $5 + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $3 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl i32.add - local.set $8 - local.get $5 - i32.const 1 + local.get $2 + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/Array#findIndex (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 loop $for-loop|0 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 3 - i32.shl - local.tee $9 - local.get $4 - i32.add - local.get $0 - local.get $9 - i32.add - f64.load - f64.store - br $for-loop|0 - end - end - loop $for-loop|1 local.get $3 - local.get $5 - i32.gt_s - if - local.get $4 - local.get $8 - local.get $5 - i32.sub - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - f64.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 + local.get $0 + i32.load offset=12 + local.tee $4 local.get $3 - i32.le_s + local.get $4 + i32.lt_s + select + i32.lt_s if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 local.get $2 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load - local.set $7 - i32.const 2 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 global.set $~argumentsLength - local.get $6 - local.get $7 - i32.const 10544 + local.get $2 + local.get $0 + local.get $1 i32.load - call_indirect (type $6) - i32.const 0 - i32.lt_s + call_indirect (type $1) if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - else - local.get $0 - local.get $1 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $7 - f64.store + global.set $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.add - local.set $2 + return end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|2 + local.set $2 + 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 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) + (func $~lib/array/Array#copyWithin@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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 + end + unreachable + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - local.get $2 - i64.xor - local.tee $2 local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - local.get $3 - i64.xor - local.tee $3 - i64.gt_s local.get $2 local.get $3 - i64.lt_s - i32.sub + call $~lib/array/Array#copyWithin + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store local.get $1 - local.get $3 - local.get $2 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.sub - i32.const 1 + i32.const 3 + i32.shl i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and - local.get $3 - select + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - local.tee $6 - local.set $5 - local.get $3 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + call $~lib/array/Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store offset=8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end + i32.ne + br_if $folding-inner0 local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $start:std/array~anonymous|34 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 local.get $1 - local.get $2 - i32.eq + i32.add + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $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 16192 + i32.lt_s if - local.get $1 - return + i32.const 48992 + i32.const 49040 + 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.store local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load local.get $0 - local.get $1 - i32.const 1 - i32.add + i32.load offset=8 local.tee $4 i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.shr_u + i32.gt_u if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.set $2 - loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $3 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.set $1 + local.get $2 + if + i32.const 1073741820 + local.get $4 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + local.get $1 local.get $1 local.get $2 - i32.lt_s + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew$653 + local.get $3 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store + local.get $4 local.get $1 - i32.const 1 - i32.add - local.set $1 + i32.store offset=16 local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub local.set $2 - br $while-continue|1 + br $__inlined_func$~lib/rt/itcms/__renew$653 end - end - else - loop $while-continue|2 - local.get $2 + local.get $1 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub + i32.load offset=12 + call $~lib/rt/itcms/__new local.tee $2 - i32.const 2 - i32.shl - local.tee $8 + local.get $3 + local.get $1 local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 + i32.load offset=16 + local.tee $4 + local.get $1 + local.get $4 + i32.lt_u + select + memory.copy end - end - loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.ne if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.add local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 + local.get $2 i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $4 + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 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 $5 - i32.load - call_indirect (type $0) i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#some (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $8 - i32.store - local.get $2 + global.set $~lib/memory/__stack_pointer i32.const 1 - i32.add - local.set $2 + return end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|2 + local.set $2 + 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 0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 + (func $~lib/array/Array#lastIndexOf (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 - ) - (func $~lib/util/sort/insertionSort (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.get $1 - local.get $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + 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 + return + end local.get $2 - local.get $1 - i32.sub - i32.const 1 + local.get $3 i32.add - local.tee $4 local.get $3 - i32.sub i32.const 1 - i32.and i32.sub - local.get $4 - i32.const 1 - i32.and + local.get $2 + local.get $2 local.get $3 + i32.ge_s select - i32.add - local.set $6 - loop $for-loop|0 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 local.get $2 - local.get $6 + i32.const 0 i32.ge_s if local.get $0 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add - local.tee $3 - i32.load offset=4 - local.tee $5 - local.set $4 - local.get $3 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $5 - i32.const 10848 i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + local.get $1 + i32.eq if - local.get $3 - local.set $4 - local.get $5 - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $3 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $7 - i32.store offset=8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - end + 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#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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + 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 local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $5 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $4 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $7 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - end + i32.store offset=4 local.get $0 - local.get $5 + i32.load offset=4 + local.get $2 i32.const 2 i32.shl i32.add - local.get $4 - i32.store offset=4 - local.get $6 - i32.const 2 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $3) + local.get $2 + i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $1 - return + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.store local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $4 - i32.load offset=4 - local.get $4 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $5 - local.get $4 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else + global.set $~lib/memory/__stack_pointer i32.const 0 + return end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - local.get $3 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if local.get $2 i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $7 - local.get $4 - i32.add - local.get $0 - local.get $7 i32.add - i32.load - i32.store + local.set $2 br $for-loop|0 end end - loop $for-loop|1 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $4 - local.get $6 - local.get $5 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 - end - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 ) - (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 + (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 16 i32.sub - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - global.get $~lib/math/random_seeded - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i64.const -7046029254386353131 - call $~lib/builtins/seed - i64.reinterpret_f64 - local.tee $0 - local.get $0 - i64.eqz - select - local.tee $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 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - local.tee $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 - global.set $~lib/math/random_state1_64 + i32.const 48992 + i32.const 49040 i32.const 1 - global.set $~lib/math/random_seeded + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/math/random_state0_64 - local.set $1 - global.get $~lib/math/random_state1_64 - local.tee $0 - global.set $~lib/math/random_state0_64 + 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 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 local.get $1 - i64.const 23 - i64.shl - i64.xor - local.tee $1 + i32.const 0 + i32.store local.get $1 - i64.const 17 - i64.shr_u - i64.xor - local.get $0 - i64.xor - local.get $0 - i64.const 26 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 - local.get $0 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - f64.reinterpret_i64 - f64.const -1 - f64.add - ) - (func $start:std/array~anonymous|49 (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + i32.store offset=4 local.get $1 i32.const 0 - i32.lt_s - local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 1056 + i32.const 1104 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 local.get $0 - local.get $2 - i32.const 1 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 i32.shl - i32.add - local.set $0 + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 local.get $1 + local.get $2 + i32.store 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 - call $~lib/util/number/utoa32_dec_lut - local.get $0 local.get $2 - i32.add - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $0 + i32.store offset=4 local.get $1 + local.get $2 + i32.store offset=4 + 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 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + 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.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer 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.store offset=12 + local.get $0 + local.get $1 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $3 + block $__inlined_func$std/array/isSorted$658 (result i32) + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted$658 + 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 4 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1080 + 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 - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $0 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $2 + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 local.get $1 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $3 i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - local.tee $11 - local.get $2 - i64.and - local.set $8 - local.get $2 - local.get $1 - i64.shr_u - i32.wrap_i64 - 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 + ) + (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 - else - local.get $3 + 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.ge_u - i32.const 3 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7724 i32.add - local.get $3 - i32.const 1000 - i32.ge_u + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 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 + 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 7724 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + 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/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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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 7712 + 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 + i32.const 1 + i32.shl + local.tee $0 + select + 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 $3 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - 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 $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $5 - local.get $6 - i32.or - if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 + local.tee $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $0 + local.get $3 + i32.add + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + 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/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end i32.const 1 - i32.add - local.set $5 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $4 - local.get $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $2 - i64.shl - local.get $8 - i64.add - local.tee $1 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 13392 - i32.add - i64.load32_u - local.get $2 - i64.shl - local.set $2 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $1 - local.get $9 - i64.lt_u - local.get $4 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - i64.sub - local.get $2 - i64.ge_u + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 i32.and - if (result i32) - local.get $9 - local.get $1 + i32.ne + if + local.get $0 local.get $2 - i64.add - local.tee $8 - i64.gt_u - local.get $9 + i32.const -4 + i32.and local.get $1 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u i32.or - else + i32.store offset=4 i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 48960 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $7 - i32.const 1 - i32.sub - local.set $7 local.get $1 - local.get $2 - i64.add - local.set $1 - br $while-continue|3 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - local.get $7 - i32.store16 - local.get $5 - return + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - br $while-continue|0 + global.get $~lib/rt/itcms/visitCount + return end - end - loop $while-continue|4 - local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $8 - i64.const 10 - i64.mul - local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.wrap_i64 - i32.const 65535 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 48960 + 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 + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $11 - i64.and - local.tee $8 - local.get $4 - i64.ge_u - br_if $while-continue|4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 i32.const 0 - local.get $7 + ) + (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.const 2 - i32.shl - i32.const 13392 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $0 + local.get $2 i32.add - i64.load32_u - i64.mul - local.set $1 + local.get $2 local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.tee $2 + local.get $0 + local.get $3 i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $1 - local.get $8 - i64.gt_u + i32.lt_s + if + local.get $2 local.get $4 - local.get $8 - i64.sub - local.get $12 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $8 - local.get $12 - i64.add - local.tee $2 - i64.gt_u - local.get $1 - local.get $8 - i64.sub - local.get $2 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $8 - local.get $12 - i64.add - local.set $8 - br $while-continue|6 - end + i32.add + local.get $1 + local.get $0 + local.get $2 + i32.sub + memory.fill end - local.get $0 - local.get $7 - i32.store16 - local.get $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) - local.get $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $0 - local.get $1 + i32.const 48992 + i32.const 49040 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $0 + i32.add + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + local.get $3 + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.set $0 + block $__inlined_func$~lib/util/bytes/FILL$139 + local.get $1 + i32.eqz + local.get $1 + i32.const -1 + i32.eq + i32.or + if + local.get $0 + local.get $2 + i32.gt_s if - local.get $0 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add local.get $1 - i32.const 1 + local.get $0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + memory.fill + end + br $__inlined_func$~lib/util/bytes/FILL$139 + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 i32.shl i32.add - i32.const 48 - i32.store16 local.get $1 + i32.store + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end - local.get $0 - local.get $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#splice@varargs (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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 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 - local.get $3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + ) + (func $~lib/array/Array#slice@varargs (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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + 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 + ) + (func $~lib/array/Array#findLastIndex (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 i32.const 0 - i32.gt_s - i32.and - if (result i32) + i32.ge_s + if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 i32.const 2 + i32.shl i32.add + i32.load + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 + i32.store + i32.const 3 + global.set $~argumentsLength local.get $2 - i32.sub - i32.const 1 - i32.shl - 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 - local.get $3 - i32.const -6 - i32.gt_s - i32.and - 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 - 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 - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - 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 - 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 - 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 $3 - select - i32.store16 - 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 - 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 - i32.const 4 - i32.add - local.tee $4 - 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 - 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 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $1 - i32.const 2 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + 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 ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) + (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - local.get $1 - f64.const 0 - f64.lt + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4 + i32.const 0 + call $~lib/rt/__newArray local.tee $3 - if (result f64) + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 + i32.store offset=4 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $5 + call $~lib/array/Array#push + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 1 - local.get $5 - select - i32.const 1075 - i32.sub - local.tee $9 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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 8 i32.sub - local.get $2 - i64.const 4503599627370495 - i64.and - local.get $5 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 local.tee $2 - i64.const 1 - i64.shl - i64.const 1 - i64.add + local.get $3 + i32.add local.tee $4 - i64.clz - i32.wrap_i64 - local.tee $10 - i32.sub - local.set $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 224 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $4 - local.get $10 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $2 - local.get $2 - 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 $9 - local.get $10 - i32.sub - local.get $5 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $5 - 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_sat_f64_s - local.tee $5 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + local.tee $0 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 local.get $5 - f64.convert_i32_s + i32.add local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $5 - i32.const 3 + i32.load offset=4 + local.get $2 + i32.const 2 i32.shl - local.tee $9 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#at (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/util/number/_K - local.get $9 - i32.const 12520 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $5 - i32.const 1 + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 143 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 i32.shl - i32.const 13216 i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $2 - local.get $2 - i64.clz - i64.shl - local.tee $2 - i64.const 4294967295 - i64.and - local.set $6 - global.get $~lib/util/number/_frc_pow - local.tee $11 - i64.const 4294967295 - i64.and - local.tee $12 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $6 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $7 - global.get $~lib/util/number/_frc_plus - local.tee $4 - i64.const 4294967295 - i64.and - local.set $13 - local.get $4 - i64.const 32 - i64.shr_u - local.tee $4 - local.get $12 - i64.mul - local.get $12 - local.get $13 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $8 - global.get $~lib/util/number/_frc_minus - local.tee $14 - i64.const 4294967295 - i64.and - local.set $15 - local.get $14 - i64.const 32 - i64.shr_u - local.tee $14 - local.get $12 - i64.mul - local.get $12 - local.get $15 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 f32) (param $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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 $2 + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + local.get $1 + local.get $2 local.get $3 - i32.const 1 - i32.shl + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#fill (param $0 i32) (param $1 f32) (param $2 i32) (param $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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $2 - local.get $11 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add + local.get $0 + i32.load offset=12 + local.tee $0 + i32.add local.get $2 - 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 + local.get $0 + local.get $0 local.get $2 - local.get $4 - i64.mul - local.get $8 - i64.const 32 - i64.shr_u - i64.add + i32.gt_s + select local.get $2 - local.get $13 - i64.mul - local.get $8 - 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 $4 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + local.get $3 i32.add - i32.const -64 - i32.sub - local.get $4 - local.get $2 - local.get $14 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $15 - i64.mul - local.get $12 - 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 $3 - call $~lib/util/number/genDigits + local.get $0 + local.get $0 local.get $3 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify + i32.gt_s + select local.get $3 - i32.add - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + i32.const 0 + i32.lt_s + select + local.set $0 + block $__inlined_func$~lib/util/bytes/FILL$148 local.get $1 - f64.const 0 - f64.eq + i32.reinterpret_f32 + i32.eqz 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 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne + local.get $2 + i32.gt_s if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const 0 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 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else + local.get $2 + i32.sub + i32.const 2 + i32.shl + memory.fill + end + br $__inlined_func$~lib/util/bytes/FILL$148 + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add 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 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 + f32.store local.get $2 - i32.const 8 + i32.const 1 i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + local.set $2 + br $for-loop|0 end - unreachable end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $1 - i32.extend8_s - local.tee $3 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 i32.lt_s - local.tee $2 if - local.get $3 - i32.const -128 - i32.eq - if - local.get $0 - i64.const 15762813447372845 - i64.store - i32.const 4 - return - end - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.extend8_s - local.tee $3 - i32.const 10 - i32.lt_u - if + call $~lib/array/Array#constructor + local.tee $2 + i32.store + loop $for-loop|0 local.get $0 - local.get $3 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i32.extend8_s - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) local.get $1 - i32.const 100 - i32.lt_u - if (result i32) + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 - i32.const 10 - i32.ge_u + local.get $0 i32.const 1 - i32.add - else + i32.sub local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add + i32.sub + call $~lib/array/Array#__set 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.const 1 i32.add + local.set $1 + br $for-loop|0 end end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - ) - (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 - local.tee $2 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $1 - i32.const 65535 - i32.and - local.set $1 - 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 - local.set $2 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa32_dec_lut + global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/sort/insertionSort (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.get $1 - i32.extend16_s - local.tee $3 - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $3 - i32.const -32768 - i32.eq - if - local.get $0 - i64.const 15481338470793261 - i64.store - local.get $0 - i32.const 3670070 - i32.store offset=8 - i32.const 6 - return - end - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $0 + local.get $3 local.get $2 + local.get $1 + i32.sub i32.const 1 - i32.shl i32.add - local.set $0 - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $3 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i32.extend16_s - 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 $3 - local.get $0 - local.get $1 + local.tee $4 local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $2 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $4 + i32.const 1 + i32.and local.get $3 + select i32.add - ) - (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 + local.set $6 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.ge_s 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 + local.get $6 i32.const 2 i32.shl - i32.const 7724 i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u + local.tee $3 + i32.load offset=4 + local.tee $5 + local.set $4 + local.get $3 + i32.load + local.set $3 i32.const 2 - i32.shl - i32.const 7724 - 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 + global.set $~argumentsLength + local.get $3 + local.get $5 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $4 + local.get $5 + local.set $3 + end + local.get $6 i32.const 1 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $7 + i32.store offset=8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + end + local.get $0 + local.get $5 + i32.const 2 i32.shl i32.add local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 - i32.const 100 - i32.div_u + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $7 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + end + local.get $0 + local.get $5 i32.const 2 i32.shl - i32.const 7724 i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u + local.get $4 + i32.store offset=4 + local.get $6 i32.const 2 - i32.shl - i32.const 7724 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + local.set $6 + br $for-loop|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/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.set $2 - local.get $1 - i64.const 10 - i64.lt_u + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $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 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 + i32.const 48992 + i32.const 49040 i32.const 1 - return + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $8 + loop $for-loop|0 + local.get $2 + local.get $8 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load offset=4 + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer 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 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer 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.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + local.tee $3 + i32.store offset=12 end - end - local.set $0 - local.get $2 - local.get $3 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - local.get $2 - 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 $8 + i32.const 1 + i32.sub + local.set $9 + loop $while-continue|1 local.get $1 - i64.const 10000000000000 - i64.ge_u - i32.add + local.get $9 + i32.le_s + if + block $while-break|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $5 + local.get $7 + i32.store offset=8 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|1 + end + end 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 $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add + local.get $9 + i32.le_s + if + block $while-break|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $5 + local.get $3 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|2 + end + end end + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.add + local.set $8 + br $for-loop|0 end - local.tee $0 - call $~lib/util/number/utoa64_dec_lut end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i64.const 0 - 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 $0 local.get $3 + local.get $2 + local.get $1 + i32.sub i32.const 1 - i32.shl i32.add - local.set $4 - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $4 - local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $3 - 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 $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 $0 - local.get $4 + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 local.get $2 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - local.get $4 - 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 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load offset=4 + local.tee $6 + local.set $5 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 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 $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 local.get $1 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 end - local.tee $0 - call $~lib/util/number/utoa64_dec_lut end - local.get $0 - local.get $3 - i32.add ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 f64) + (local $8 i32) local.get $1 - i32.const 255 - i32.and - local.tee $2 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end + local.get $3 + local.get $2 local.get $1 - i32.const 255 + i32.sub + i32.const 1 + i32.add + local.tee $6 + local.get $3 + i32.sub + i32.const 1 i32.and - local.set $1 - i32.const 3 - local.get $1 - i32.const 10 - i32.ge_u + i32.sub + local.get $6 i32.const 1 + i32.and + local.get $3 + select i32.add - local.get $1 - i32.const 100 - i32.ge_u - select - local.set $2 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $std/array/Proxy - block $std/array/Dim - block $~lib/typedarray/Uint8Array - block $std/array/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $std/array/Ref $~lib/typedarray/Uint8Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $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-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable + local.set $6 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.ge_s + if + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load offset=8 + local.tee $7 + local.set $5 + local.get $3 + f64.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $7 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + if + local.get $4 + local.set $5 + local.get $7 + local.set $4 + end + local.get $6 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $8 + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $7 + f64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|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 16192 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner4 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 16192 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store offset=16 + loop $while-continue|2 local.get $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 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl i32.add - local.set $1 - br $while-continue|0 + local.tee $8 + f64.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $5 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $8 + local.get $4 + f64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 end end - br $folding-inner4 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 16192 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $5 + f64.store offset=8 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 end - i32.const 48992 - i32.const 49040 - 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 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~start - global.get $~started - if - return - end + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f32) + (local $6 f32) + (local $7 i32) + (local $8 f32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub i32.const 1 - global.set $~started - call $start:std/array + i32.add + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load offset=4 + local.tee $8 + local.set $6 + local.get $3 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + f32.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + f32.store offset=4 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end ) - (func $~lib/array/Array#constructor (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -6409,844 +6521,738 @@ unreachable end 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 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 i32.store - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=12 local.get $0 - i32.const 268435455 - i32.gt_u + i32.eqz if - i32.const 1056 - i32.const 1104 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7712 + return end global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $0 local.get $0 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 call $~lib/rt/itcms/__new local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $1 local.get $0 - i32.store + local.get $2 + call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/rt/tlsf/removeBlock (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 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.store - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $0 - local.get $2 - i32.add - local.get $2 - local.get $0 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.tee $2 - local.get $0 - local.get $3 - i32.add local.get $3 - local.get $0 - local.get $0 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.tee $0 - i32.lt_s + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if - local.get $2 + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 local.get $4 - i32.add - local.get $1 - local.get $0 - local.get $2 + i32.const 4 i32.sub - memory.fill + i32.shr_u + i32.const 16 + i32.xor end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#get:length (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 16192 - i32.lt_s + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 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.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $5 + i32.store offset=8 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + local.get $5 if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $4 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 4 + i32.shl + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/isArraysEqual (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 16192 - i32.lt_s + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq if - i32.const 48992 - i32.const 49040 - 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.store - local.get $0 - call $~lib/array/Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $folding-inner1 - block $folding-inner0 - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - br_if $folding-inner0 + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 local.get $1 - i32.eq - br_if $folding-inner1 - loop $for-loop|0 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $4 - i32.ne - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.rotl + i32.and + i32.store end - br $folding-inner1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return 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#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $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 16192 - i32.lt_s + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 $2 - end - i32.const 2147483647 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $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 16192 - i32.lt_s + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 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.store - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $0 + local.get $1 + i32.const 4 i32.add - local.get $2 - local.get $0 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end local.get $3 - local.get $0 - local.get $0 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$139 + i32.const 2 + i32.and + if local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and i32.eqz - local.get $1 - i32.const -1 - i32.eq - i32.or if - local.get $0 - local.get $2 - i32.gt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $0 - local.get $2 - i32.sub - i32.const 2 - i32.shl - memory.fill - end - br $__inlined_func$~lib/util/bytes/FILL$139 - end - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - local.get $4 - 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.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $2 + i32.add + i32.ne if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 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.store + local.get $4 + i32.const 4 + i32.sub local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 + local.get $5 + i32.const 4 i32.shl + local.get $2 i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/isArraysEqual (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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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.store - local.get $0 - call $~lib/array/Array#get:length + i32.load offset=96 local.set $3 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store - block $folding-inner1 - block $folding-inner0 - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $4 - i32.ne - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - 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#fill@varargs (param $0 i32) (param $1 i32) (param $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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - 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 $2 - end - i32.const 2147483647 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.store offset=4 local.get $1 - local.get $2 local.get $3 - call $~lib/array/Array#fill - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 f32) (param $2 i32) (param $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 16192 - i32.lt_s + i32.store offset=8 + local.get $3 if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $5 + i32.const 4 + i32.shl local.get $2 - local.get $0 - i32.load offset=12 - local.tee $0 i32.add - local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 local.get $0 local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store local.get $0 - local.get $3 + local.get $5 + i32.const 2 + i32.shl i32.add - local.get $3 + local.tee $0 local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$148 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.reinterpret_f32 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$731 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 i32.eqz if local.get $0 - local.get $2 - i32.gt_s + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 48960 + i32.lt_u + i32.and + i32.eqz if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add i32.const 0 - local.get $0 - local.get $2 - i32.sub - i32.const 2 - i32.shl - memory.fill + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end - br $__inlined_func$~lib/util/bytes/FILL$148 + br $__inlined_func$~lib/rt/itcms/Object#unlink$731 end - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - local.get $4 - local.get $2 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 16000 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 16004 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $std/array/Proxy + block $std/array/Dim + block $~lib/typedarray/Uint8Array + block $std/array/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $std/array/Ref $~lib/typedarray/Uint8Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $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-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + 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 16192 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner4 + 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 16192 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 i32.const 2 i32.shl i32.add - local.get $1 - f32.store - local.get $2 - i32.const 1 - i32.add local.set $2 - br $for-loop|0 + 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 + br $folding-inner4 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 16192 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if i32.const 48992 i32.const 49040 i32.const 1 @@ -7255,177 +7261,337 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $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 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (func $~lib/math/NativeMath.random (result f64) + (local $0 i64) + (local $1 i64) + global.get $~lib/math/random_seeded + i32.eqz + if + i64.const -7046029254386353131 + call $~lib/builtins/seed + i64.reinterpret_f64 + local.tee $0 + local.get $0 + i64.eqz + select + local.tee $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 + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $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 + global.set $~lib/math/random_state1_64 + i32.const 1 + global.set $~lib/math/random_seeded + end + global.get $~lib/math/random_state0_64 + local.set $1 + global.get $~lib/math/random_state1_64 + local.tee $0 + global.set $~lib/math/random_state0_64 + local.get $1 + local.get $1 + i64.const 23 + i64.shl + i64.xor + local.tee $1 + local.get $1 + i64.const 17 + i64.shr_u + i64.xor + local.get $0 + i64.xor + local.get $0 + i64.const 26 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + local.get $0 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + f64.reinterpret_i64 + f64.const -1 + f64.add + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 f32) + (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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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.store - local.get $0 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store block $folding-inner1 - block $folding-inner0 - local.get $1 - call $~lib/array/Array#get:length - local.get $4 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 (result 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 16192 + i32.lt_s br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + end + local.get $5 + 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) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#toString + else + i32.const 11568 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + end + i32.const 11568 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.set $2 loop $for-loop|0 - local.get $2 - local.get $4 + local.get $1 + local.get $5 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.tee $3 local.get $3 - f32.ne - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.tee $3 - local.get $3 - f32.ne - else - i32.const 0 - end - i32.eqz + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store + local.get $6 if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array#__get - f64.promote_f32 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - f64.promote_f32 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - i32.ne - br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 + call $~lib/array/Array#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 local.get $0 - i32.store + local.get $6 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + local.get $2 + if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $3 - f32.ne - br_if $folding-inner0 + i32.const 11856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end - br $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $5 + 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 $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/array/Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 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 return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 48992 + i32.const 49040 i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7440,323 +7606,341 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $4 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + if (result i32) + local.get $5 + i32.load offset=12 + else + i32.const 0 end - i32.const 0 + local.get $2 + i32.add local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 2147483647 - local.set $3 end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 local.get $2 - local.get $3 - call $~lib/array/Array#fill + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 16 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/internalCapacity (param $0 i32) (result 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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=8 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 local.get $0 - i32.load - local.tee $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $6 i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 + local.get $6 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $3 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.set $1 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $2 + loop $for-loop|1 local.get $2 + local.get $4 + i32.lt_s if - i32.const 1073741820 - local.get $4 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.set $1 - end - block $__inlined_func$~lib/rt/itcms/__renew$653 local.get $3 - i32.const 20 - i32.sub - local.tee $4 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u + local.tee $5 if - local.get $4 local.get $1 - i32.store offset=16 - local.get $3 - local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$653 + local.get $6 + i32.add + local.get $5 + i32.load offset=4 + local.get $5 + i32.load offset=12 + i32.const 2 + i32.shl + local.tee $5 + memory.copy + local.get $1 + local.get $5 + i32.add + local.set $1 end - local.get $1 - local.get $4 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $3 - local.get $1 - local.get $4 - i32.load offset=16 - local.tee $4 - local.get $1 - local.get $4 - i32.lt_u - select - memory.copy - end - local.get $2 - local.get $3 - i32.ne - if - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 end - local.get $0 - local.get $1 - i32.store offset=8 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) + (func $~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 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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.store - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + 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 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$743 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$743 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$743 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_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 11856 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + 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 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$743 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + 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 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#reverse (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 $8 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7779,117 +7963,147 @@ local.get $0 i32.store local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 0 - i32.le_s - if - i32.const 2640 - i32.const 1104 - i32.const 271 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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.set $2 global.get $~lib/memory/__stack_pointer local.get $0 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 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $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 16192 - i32.lt_s + i32.load offset=12 + local.tee $5 + i32.const 1 + i32.gt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $5 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.store - 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 130 - i32.const 22 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $4 + local.get $5 + i32.const 8 + i32.sub + local.set $6 + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.add + local.get $4 + i32.lt_u + if + local.get $1 + local.get $2 + i32.add + local.tee $7 + i64.load + 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.set $3 + local.get $7 + local.get $2 + local.get $6 + i32.add + local.get $1 + i32.sub + local.tee $7 + i64.load + local.tee $8 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $8 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $8 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $8 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $7 + local.get $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 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|0 + end end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 + local.get $5 i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + local.get $2 + i32.add + local.tee $6 + i32.load8_u + local.set $7 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.add + local.tee $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7908,52 +8122,70 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + 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 $2 + end + i32.const 2147483647 + local.set $3 + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + local.get $3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 1344 - i32.const 1104 - i32.const 143 - i32.const 33 + i32.const 48992 + i32.const 49040 + 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.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.const 11856 + call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#fill@varargs (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 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7968,79 +8200,46 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 i32.store - local.get $1 - i32.load offset=12 - local.tee $2 - local.get $3 - i32.add - local.tee $4 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 224 - i32.const 60 - call $~lib/builtins/abort - unreachable + 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 $2 + end + i32.const 2147483647 + local.set $3 end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $5 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - local.tee $0 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $0 - local.get $5 - i32.add local.get $1 - i32.load offset=4 local.get $2 - i32.const 2 - i32.shl - memory.copy + local.get $3 + call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#reverse (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 @@ -8064,114 +8263,110 @@ i32.store local.get $0 i32.load offset=4 - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $3 local.get $0 i32.load offset=12 - local.tee $5 - local.get $3 - local.get $5 - i32.lt_s - select - local.set $3 - local.get $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $5 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - 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.const 2 - i32.shl - i32.add - local.get $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $5 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - 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 $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 $5 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.lt_s - select + local.tee $4 + i32.const 1 + i32.gt_u + if + local.get $4 + i32.const 1 + i32.shr_u + local.set $3 + local.get $4 + i32.const 2 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + i32.const 1 + i32.add + local.get $3 + i32.lt_u + if + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + local.set $7 + local.get $6 + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + i32.store + local.get $6 + local.get $7 + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + local.set $6 + local.get $5 + local.get $2 + local.get $4 + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + i32.store16 + local.get $5 + local.get $6 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end end - local.get $2 - i32.sub - local.tee $2 - local.get $5 - local.get $1 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - i32.const 2 - i32.shl - memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 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 @@ -8190,125 +8385,41 @@ 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 - end - unreachable - end - i32.const 2147483647 - local.set $3 - end global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/isArraysEqual (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store - block $folding-inner1 - block $folding-inner0 - local.get $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $2 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.get $4 - i32.ne - br_if $folding-inner0 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1 ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8323,53 +8434,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - call $~lib/array/ensureCapacity + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 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 - memory.copy - local.get $3 - local.get $1 - i32.store + i32.load offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 - local.get $2 - i32.store offset=12 + local.get $1 + call $~lib/util/sort/SORT 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/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8387,321 +8482,278 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer 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 $2 + local.tee $3 i32.const 2 i32.const 4 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store - local.get $0 + local.get $4 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.const 2 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/array/Array#slice@varargs (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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 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 + local.set $4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $3 + local.get $5 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + i32.const 2 + i32.shl + local.tee $5 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $5 + i32.add + local.get $6 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - i32.const 2147483647 - local.set $2 end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#slice - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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.store - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $5 - i32.const 1 - i32.gt_u - if - local.get $5 - i32.const 1 - i32.shr_u - local.set $4 - local.get $5 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub - local.set $6 - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.add - local.get $4 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$738 + local.get $0 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s if - local.get $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $7 - i64.load - 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.set $3 - local.get $7 - local.get $2 + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$738 + end + local.get $7 + i32.eqz + if local.get $6 - i32.add - local.get $1 - i32.sub - local.tee $7 - i64.load - local.tee $8 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $8 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $8 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $8 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - i64.store - local.get $7 - local.get $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 - local.get $1 + i32.load + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 8 i32.add - local.set $1 - br $while-continue|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$738 end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|1 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $4 - i32.lt_u - if - local.get $1 - local.get $2 - i32.add - local.tee $6 - i32.load8_u - local.set $7 - local.get $6 - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.add - local.tee $6 - i32.load8_u - i32.store8 - local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + 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 + local.get $7 + i32.mul + i32.const 11 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $4 local.get $7 - i32.store8 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $4 + 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 + memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $7 + 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 $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $while-continue|1 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$738 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + 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 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (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 global.get $~lib/memory/__stack_pointer @@ -8716,263 +8768,317 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/array/Array#constructor + local.tee $1 i32.store - local.get $0 - i32.load offset=12 - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $3 - local.get $4 - i32.const 2 - i32.sub - local.set $5 - loop $while-continue|0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 + local.get $2 + call $~lib/math/NativeMath.random + local.get $0 + f64.convert_i32_s + f64.mul + i32.trunc_sat_f64_s + call $~lib/array/Array#__set + local.get $2 i32.const 1 i32.add - local.get $3 - i32.lt_u - if - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $6 - i32.load - i32.const 16 - i32.rotr - local.set $7 - local.get $6 - local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $6 - i32.load - i32.const 16 - i32.rotr - i32.store - local.get $6 - local.get $7 - i32.store - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - local.set $6 - local.get $5 - local.get $2 - local.get $4 - local.get $1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - i32.store16 - local.get $5 - local.get $6 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|1 - end + local.set $2 + br $for-loop|0 end end 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/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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + 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.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/array/Array#sort + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=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 16192 + i32.lt_s + br_if $folding-inner0 + local.get $1 + local.set $0 + 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 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.store - local.get $0 - i32.load offset=12 - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - if + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.set $4 + block $__inlined_func$std/array/isSorted<~lib/array/Array>$660 (result i32) + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $1 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $3 + local.get $0 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/array/Array>$660 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1080 + 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 - i32.const -1 return end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 + i32.const 1 + i32.sub + local.tee $5 + local.get $3 + i32.add + local.set $6 + local.get $5 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $7 + local.get $4 + i32.add + local.get $0 + local.get $7 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $4 + local.get $6 + local.get $5 + i32.sub + i32.const 2 + i32.shl + i32.add local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.get $1 - i32.eq + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store local.get $2 - return + i32.const 1 + i32.add + local.set $2 end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $1 + br $for-loop|2 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#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8987,525 +9093,667 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - return - end - local.get $2 - local.get $3 - i32.add + i64.const 0 + i64.store offset=8 local.get $3 + local.get $2 i32.const 1 i32.sub + local.tee $2 + i32.add + local.set $7 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 local.get $2 - i32.const 0 - i32.ge_s + local.get $3 + i32.lt_s if + local.get $4 + local.get $7 + local.get $2 + i32.sub + i32.const 2 + i32.shl + i32.add local.get $0 local.get $2 i32.const 2 i32.shl i32.add - i32.load - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end + i32.load offset=4 + i32.store local.get $2 i32.const 1 - i32.sub + 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#lastIndexOf@varargs (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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#includes (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (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) + (func $~lib/util/sort/mergeRuns (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + (local $7 i32) + (local $8 i32) local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - 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 $4 + i32.const 1 i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $5 - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.tee $2 - local.get $4 - i32.const 2 - i32.shl - i32.add local.tee $6 - local.get $5 - i32.const 2 - i32.shl - memory.copy - local.get $4 - local.get $5 - i32.add - local.tee $4 local.get $3 - i32.ne - if - local.get $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - memory.copy + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - local.get $5 - i32.sub - 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/array/Array#splice@varargs (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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + 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 $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 i32.const 1 i32.sub - br_table $0of1 $1of1 $outOfRange + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end - i32.const 2147483647 - local.set $2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + (local $6 f64) + (local $7 f64) + (local $8 i32) + (local $9 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.const 0 - 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.tee $5 + local.get $3 + i32.add + local.set $8 + local.get $5 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s - select + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $9 + local.get $4 + i32.add + local.get $0 + local.get $9 + i32.add + f64.load + f64.store + br $for-loop|0 + end end - local.tee $4 - i32.sub - local.tee $1 - local.get $1 - i32.const 2 - 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 10 - i32.const 0 - call $~lib/rt/__newArray - local.tee $5 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.tee $3 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $1 - i32.const 2 - i32.shl - memory.copy - local.get $2 - local.get $1 - local.get $4 - i32.add - local.tee $4 - i32.ne - if - local.get $6 + loop $for-loop|1 local.get $3 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $2 - local.get $4 - i32.sub - i32.const 2 - i32.shl - memory.copy + local.get $5 + i32.gt_s + if + local.get $4 + local.get $8 + local.get $5 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $6 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 i32) + (local $10 i32) local.get $2 - local.get $1 + i32.const 1 i32.sub - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.tee $6 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + f32.load + f32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $6) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end ) - (func $~lib/array/Array#__get (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + local.get $2 + i32.eq if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - 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 $0 - i32.load offset=4 local.get $1 + i32.const 1 + i32.add + local.tee $3 i32.const 2 i32.shl i32.add i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s if - i32.const 6416 - i32.const 1104 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/extendRunRight (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.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9523,638 +9771,606 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 0 + i32.store offset=8 local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + local.get $2 + i32.eq if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - 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 offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 + local.tee $5 i32.store - 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 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 + i32.const 1 + i32.add + local.tee $4 i32.const 2 i32.shl i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#findIndex (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.load + local.tee $6 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $3 - local.get $0 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength + loop $while-continue|0 local.get $2 - local.get $0 + local.get $4 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $5 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $5 + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 local.get $1 - i32.load - call_indirect (type $1) + local.get $2 + i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.tee $3 + i32.load + local.tee $5 + i32.store offset=8 + local.get $3 + local.get $0 local.get $2 - return + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end + end + else + loop $while-continue|2 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $1 + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $4 ) - (func $start:std/array~anonymous|3 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 - i32.store + (func $~lib/util/sort/extendRunRight (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 $1 local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - 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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load local.get $0 - i32.const 100 - i32.eq - ) - (func $~lib/array/Array#findLastIndex (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 + local.get $1 i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - local.get $0 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 local.get $1 - i32.load - call_indirect (type $1) + local.get $2 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 local.get $2 - return + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end + end + else + loop $while-continue|2 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $4 ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/extendRunRight (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (local $4 f64) + (local $5 f64) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $3 - local.get $0 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 local.get $1 - i32.load - call_indirect (type $1) - i32.eqz + local.get $2 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $1 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return + local.tee $6 + f64.load + local.set $4 + local.get $6 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $6 + local.get $4 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end + end + else + loop $while-continue|2 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 + local.get $3 ) - (func $start:std/array~anonymous|12 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 - i32.store + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + local.get $1 local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|14 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.eq if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f32.load local.get $0 - i32.const 3 - i32.lt_s - ) - (func $~lib/array/Array#some (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $3 - local.get $0 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength + loop $while-continue|0 local.get $2 - local.get $0 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 + local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $6) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 local.get $1 - i32.load - call_indirect (type $1) + local.get $2 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.tee $3 + f32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + f32.store + local.get $1 i32.const 1 - return + i32.add + local.set $1 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end + end + else + loop $while-continue|2 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $6) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $start:std/array~anonymous|17 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 - i32.store - local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|19 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 3 - i32.gt_s + local.get $4 ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) + (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) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -10173,3504 +10389,1612 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + local.get $0 + local.get $1 + i32.eq + i32.or + i32.or + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $2 - local.get $3 local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 local.get $4 - i32.lt_s - select - i32.lt_s + i32.or + i32.eqz + br_if $folding-inner0 + local.get $4 + i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl + i32.const 8 i32.add - i32.load + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $5 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $3) - local.get $2 - i32.const 1 + i32.const 8 i32.add - local.set $2 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + 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 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $4 + local.get $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.tee $2 + i32.const 4 + i32.ge_u + if (result i32) + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|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 $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-loop|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 $6 + i32.ne + if + local.get $3 + local.get $6 + 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 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + local.get $5 + i32.sub + local.get $0 + select + return end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $start:std/array~anonymous|21 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (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 + local.tee $2 + i32.const 10 + i32.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + local.get $1 + i32.const 255 + i32.and + local.set $1 + i32.const 3 + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $1 i32.const 100 - call $~lib/array/Array#push - global.get $std/array/i + i32.ge_u + select + local.set $2 local.get $0 - i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/array~anonymous|23 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 $1 local.get $2 - i32.store + call $~lib/util/number/utoa32_dec_lut local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $0 + local.set $2 + local.get $1 + i64.const 10 + i64.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $1 - i32.eqz + i64.const 4294967295 + i64.le_u if - loop $for-loop|0 + local.get $1 + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) local.get $3 - i32.const 4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - 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 - local.set $3 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + else local.get $3 - i32.const 100 + i32.const 10000 + i32.ge_u + i32.const 3 i32.add - call $~lib/array/Array#push local.get $3 - i32.const 1 + i32.const 1000 + i32.ge_u i32.add - local.set $3 - br $for-loop|1 end - end - i32.const 0 - local.set $3 - loop $for-loop|2 + else local.get $3 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop + i32.const 10000000 + i32.lt_u + if (result i32) local.get $3 - i32.const 1 + i32.const 1000000 + i32.ge_u + i32.const 6 i32.add - local.set $3 - br $for-loop|2 - end - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + else local.get $3 - i32.const 200 + i32.const 1000000000 + i32.ge_u + i32.const 8 i32.add - call $~lib/array/Array#push local.get $3 - i32.const 1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $0 + local.get $2 + local.get $3 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $2 + 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 - local.set $3 - br $for-loop|3 end end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut end - local.get $1 - i32.const 2 - i32.eq local.get $0 - i32.const 202 - i32.ne - i32.and - if - i32.const 0 - i32.const 1552 - i32.const 767 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $start:std/array~anonymous|27 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (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 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $std/array/i local.get $0 - i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + 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 + call $~lib/util/number/utoa32_dec_lut local.get $0 ) - (func $~lib/array/Array#map (param $0 i32) (param $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) - 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 16192 - i32.lt_s + local.get $1 + i32.const 65535 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u if - i32.const 48992 - i32.const 49040 + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 i32.const 1 + return + end + local.get $1 + i32.const 65535 + i32.and + local.set $1 + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.set $2 local.get $0 - i32.load offset=12 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.extend8_s local.tee $3 - i32.const 2 - i32.const 4 i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - local.set $4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $5 + i32.lt_s + local.tee $2 + if local.get $3 - local.get $5 - i32.lt_s - select - i32.lt_s + i32.const -128 + i32.eq if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $2 - i32.const 2 - i32.shl - local.tee $5 local.get $0 - i32.load offset=4 + i64.const 15762813447372845 + i64.store + i32.const 4 + return + end + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend8_s + local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $1 + i32.extend8_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 i32.add - i32.load - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + else + local.get $1 + i32.const 10000 + i32.ge_u i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $5 i32.add - local.get $6 - local.get $2 - local.get $0 local.get $1 - i32.load - call_indirect (type $1) - i32.store - local.get $2 - 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 $2 - br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/array~anonymous|29 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i + local.set $3 local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/array/Array#filter (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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $1 + i64.const 0 + i64.lt_s + local.tee $3 if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - 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 - 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 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 + local.get $3 + i32.const 1 + i32.shl + i32.add local.set $4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $5 + local.get $1 + i64.const 10 + i64.lt_u + if local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $3 + 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 $2 + i32.const 100000 + i32.lt_u + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 3 - global.set $~argumentsLength - local.get $5 + 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 - local.get $0 + 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 $0 + local.get $4 + local.get $2 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $4 + local.get $1 + local.get $1 + i64.const 1000000000000000 + i64.lt_u + if (result i32) local.get $1 - i32.load - call_indirect (type $1) - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $5 - call $~lib/array/Array#push + 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 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 local.get $3 + i32.add ) - (func $start:std/array~anonymous|31 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 + (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 - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $std/array/i local.get $0 + local.get $2 + i32.const 1 + i32.shl i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 + 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 - i32.ge_s - ) - (func $start:std/array~anonymous|33 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i + local.tee $0 + call $~lib/util/number/utoa32_dec_lut local.get $0 + local.get $2 i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.ge_s ) - (func $~lib/array/Array#reduce (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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 0 i32.lt_s + local.tee $2 if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $3 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s + i32.const -32768 + i32.eq if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $3 + i64.const 15481338470793261 + i64.store local.get $0 - local.get $1 - i32.load - call_indirect (type $4) - local.set $2 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + i32.const 3670070 + i32.store offset=8 + i32.const 6 + return end + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 local.get $2 - ) - (func $start:std/array~anonymous|38 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 $3 - i32.store - local.get $3 i32.const 1 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + local.set $0 local.get $1 - i32.add - ) - (func $start:std/array~anonymous|40 (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.extend16_s + local.tee $3 + i32.const 10 + i32.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $3 - local.get $0 + i32.extend16_s + 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.load - call_indirect (type $4) - local.set $2 - local.get $3 + i32.const 10 + i32.ge_u i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 + 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 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $std/array/Dim#constructor (result i32) - (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 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - 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 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + 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 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 $0 - return end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) (local $3 i32) - (local $4 i32) + (local $4 i64) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) + (local $11 i64) + (local $12 i64) + (local $13 i64) (local $14 i64) - (local $15 i32) - (local $16 i32) - (local $17 f32) - (local $18 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 + (local $15 i64) + local.get $1 + f64.const 0 + f64.lt + local.tee $3 + if (result f64) + local.get $0 + i32.const 45 + i32.store16 + local.get $1 + f64.neg + else local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - f32.load - local.set $9 - local.get $0 - f32.load offset=4 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store - local.get $0 - f32.load offset=8 - local.set $18 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $18 - local.get $9 - local.get $17 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $18 - local.get $2 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store offset=4 - local.get $0 - local.get $9 - local.get $18 - local.get $1 - select - f32.store offset=8 - end - local.get $0 - f32.load - local.set $9 - local.get $0 - f32.load offset=4 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store - local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - f32.store offset=4 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $11 - i32.add - local.set $12 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $11 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - 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 $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $13 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $14 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $14 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $15 - local.get $11 - i32.add - local.tee $16 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $15 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $16 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $12 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $12 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free - 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 - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 10256 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 10256 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.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.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/sort/SORT (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 f64) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - f64.load - local.set $16 - local.get $0 - f64.load offset=8 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $16 - local.get $16 - local.get $17 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store - local.get $0 - f64.load offset=16 - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $16 - local.get $17 - local.get $1 - select - local.tee $16 - local.get $8 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - local.set $1 - local.get $0 - local.get $8 - local.get $16 - local.get $1 - select - f64.store offset=8 - local.get $0 - local.get $16 - local.get $8 - local.get $1 - select - f64.store offset=16 - end - local.get $0 - f64.load - local.set $8 - local.get $0 - f64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $8 - local.get $8 - local.get $16 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store - local.get $0 - local.get $8 - local.get $16 - local.get $1 - select - f64.store offset=8 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $3 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $4 - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $10 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - 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 $1 - i32.const 3 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $9 - call $~lib/util/sort/extendRunRight - local.tee $3 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $3 - local.get $1 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - loop $while-continue|2 - local.get $3 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - local.get $3 - i32.const 1 - i32.add - local.tee $5 - local.get $9 - call $~lib/util/sort/extendRunRight - local.tee $4 - local.get $5 - i32.sub - i32.const 1 - i32.add - local.tee $6 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - local.get $5 - local.get $9 - local.get $5 - i32.const 31 - i32.add - local.tee $4 - local.get $4 - local.get $9 - i32.gt_s - select - local.tee $4 - local.get $6 - call $~lib/util/sort/insertionSort - end - local.get $2 - local.get $5 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $4 - local.get $5 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $6 - loop $for-loop|3 - local.get $1 - local.get $6 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $7 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - local.get $7 - local.get $2 - local.get $3 - local.get $12 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $7 - local.set $2 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $6 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $2 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $5 - local.set $2 - local.get $4 - local.set $3 - local.get $6 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $2 - local.get $10 - i32.add - i32.load - local.tee $3 - i32.const -1 - i32.ne - if - local.get $2 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - local.get $3 - local.get $2 - local.get $9 - local.get $12 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - 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 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/SORT (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) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store - local.get $0 - i32.load offset=8 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store offset=4 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store offset=4 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - 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 $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - 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 - ) - (func $~lib/array/Array#sort (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $2 - local.get $1 - local.get $1 - local.get $2 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store - local.get $0 - i32.load offset=8 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $3 - select - local.tee $1 - local.get $4 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $2 - local.get $0 - local.get $4 - local.get $1 - local.get $2 - select - i32.store offset=4 - local.get $0 - local.get $1 - local.get $4 - local.get $2 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $2 - local.get $1 - local.get $1 - local.get $2 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store - local.get $0 - local.get $1 - local.get $2 - local.get $3 - select - i32.store offset=4 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $3 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $4 - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 - i32.add - local.set $10 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $9 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - 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 $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $8 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $8 - local.get $8 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - loop $while-continue|2 - local.get $4 - local.get $8 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $5 - local.get $8 - call $~lib/util/sort/extendRunRight - local.tee $3 - local.get $5 - i32.sub - i32.const 1 - i32.add - local.tee $6 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $5 - local.get $8 - local.get $5 - i32.const 31 - i32.add - local.tee $3 - local.get $3 - local.get $8 - i32.gt_s - select - local.tee $3 - local.get $6 - call $~lib/util/sort/insertionSort - end - local.get $2 - local.get $5 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $8 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $12 - i64.div_u - local.get $3 - local.get $5 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $12 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $6 - loop $for-loop|3 - local.get $1 - local.get $6 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $13 - local.get $9 - i32.add - local.tee $14 - i32.load - local.tee $7 - i32.const -1 - i32.ne - if - local.get $10 - local.get $13 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $7 - local.get $2 - local.get $4 - local.get $11 - call $~lib/util/sort/mergeRuns - local.get $14 - i32.const -1 - i32.store - local.get $7 - local.set $2 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $6 - i32.const 2 - i32.shl - local.tee $1 - local.get $9 - i32.add - local.get $2 - i32.store - local.get $1 - local.get $10 - i32.add - local.get $4 - i32.store - local.get $5 - local.set $2 - local.get $3 - local.set $4 - local.get $6 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $2 - local.get $9 - i32.add - i32.load - local.tee $3 - i32.const -1 - i32.ne - if - local.get $2 - local.get $10 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $3 - local.get $2 - local.get $8 - local.get $11 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $9 - call $~lib/rt/tlsf/__free - 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 + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 1 + local.get $5 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub + local.get $2 + i64.const 4503599627370495 + i64.and + local.get $5 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.tee $2 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $4 + i64.clz + i32.wrap_i64 + local.tee $10 + i32.sub + local.set $5 + local.get $4 + local.get $10 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $2 + local.get $2 + 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 $9 + local.get $10 + i32.sub + local.get $5 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $5 + 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_sat_f64_s + local.tee $5 + local.get $5 + f64.convert_i32_s + local.get $1 + f64.ne 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 8 + 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/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#constructor + global.set $~lib/util/number/_K + local.get $9 + i32.const 12520 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $5 + i32.const 1 + i32.shl + i32.const 13216 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $2 + local.get $2 + i64.clz + i64.shl local.tee $2 - i32.store - loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - local.get $0 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 + i64.const 4294967295 + i64.and + local.set $6 + global.get $~lib/util/number/_frc_pow + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $6 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + global.get $~lib/util/number/_frc_plus + local.tee $4 + i64.const 4294967295 + i64.and + local.set $13 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $4 + local.get $12 + i64.mul + local.get $12 + local.get $13 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $8 + global.get $~lib/util/number/_frc_minus + local.tee $14 + i64.const 4294967295 + i64.and + local.set $15 + local.get $14 + i64.const 32 + i64.shr_u + local.tee $14 + local.get $12 + i64.mul + local.get $12 + local.get $15 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $0 + local.get $3 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 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 8 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + 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 + local.get $2 + local.get $4 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $13 + i64.mul + local.get $8 + 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 $4 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $~lib/math/NativeMath.random - local.get $0 - f64.convert_i32_s - f64.mul - i32.trunc_sat_f64_s - call $~lib/array/Array#__set - 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 + local.get $4 + local.get $2 + local.get $14 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $15 + i64.mul + local.get $12 + 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 $3 + call $~lib/util/number/genDigits + local.get $3 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 ) - (func $std/array/assertSorted (param $0 i32) (param $1 i32) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 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 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - block $__inlined_func$std/array/isSorted$658 (result i32) - global.get $~lib/memory/__stack_pointer + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $1 + f64.const 0 + f64.eq + if local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 + 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 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if local.get $1 - call $~lib/array/Array#sort - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:length - local.set $3 - loop $for-loop|0 + f64.ne + if local.get $0 - local.get $3 - i32.lt_s + 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 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $1 + f64.const 0 + f64.lt + local.tee $2 if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 local.get $0 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + i32.const 45 + i32.store16 local.get $0 - call $~lib/array/Array#__get i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isSorted$658 - end - local.get $0 - i32.const 1 i32.add local.set $0 - br $for-loop|0 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 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 end - global.get $~lib/memory/__stack_pointer - 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 1080 - 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 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $std/array/assertSortedDefault (param $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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + call $~lib/util/number/dtoa_core end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11120 - i32.store offset=4 - local.get $0 - i32.const 11120 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (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 16192 - i32.lt_s + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $1 - i32.load - i32.sub - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $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 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - local.get $1 - local.get $3 + local.get $0 local.get $2 - local.get $1 - i32.sub - i32.const 1 + i32.const 2 + i32.shl i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl i32.and - local.get $3 - select - i32.add - local.set $8 - loop $for-loop|0 + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz local.get $2 - local.get $8 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - local.get $8 + local.get $1 + i32.ctz + local.tee $1 i32.const 2 i32.shl i32.add - local.tee $5 - i32.load - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 i32.load offset=4 - local.tee $5 - i32.store offset=4 - local.get $5 - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $3 - local.tee $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - local.tee $3 - i32.store offset=12 - end - local.get $8 - i32.const 1 - i32.sub - local.set $9 - loop $while-continue|1 - local.get $1 - local.get $9 - i32.le_s - if - block $while-break|1 - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=20 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $5 - local.get $7 - i32.store offset=8 - local.get $9 - i32.const 1 - i32.sub - local.set $9 - br $while-continue|1 - end - end - end - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $9 - i32.le_s - if - block $while-break|2 - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $5 - local.get $3 - i32.store offset=4 - local.get $9 - i32.const 1 - i32.sub - local.set $9 - br $while-continue|2 - end - end + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end local.get $0 - local.get $9 - i32.const 2 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 i32.shl i32.add - local.get $6 - i32.store offset=4 - local.get $8 i32.const 2 + i32.shl i32.add - local.set $8 - br $for-loop|0 + i32.load offset=96 + else + i32.const 0 end end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - 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 - local.get $2 - i32.eq + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add - global.set $~lib/memory/__stack_pointer local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if return end - global.get $~lib/memory/__stack_pointer - local.get $0 local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 local.get $1 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add - local.tee $4 - i32.const 2 - i32.shl + local.get $3 i32.add - i32.load - local.tee $6 - i32.store offset=4 + local.tee $3 i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 + i32.store + local.get $0 local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $std/array/arr + local.tee $0 if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $5 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $5 - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 10032 + call $~lib/rt/itcms/__visit + global.get $std/array/inputStabArr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/outputStabArr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 2640 + call $~lib/rt/itcms/__visit + i32.const 6416 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 8144 + call $~lib/rt/itcms/__visit + i32.const 9200 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.tee $5 - i32.store offset=8 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $1 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $1 - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end + ) + (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + i32.const 11856 + call $~lib/array/Array<~lib/string/String|null>#join + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13685,161 +12009,223 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.set $7 - local.get $2 - i32.const 1 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $6 - loop $for-loop|0 + global.set $~lib/memory/__stack_pointer + ) + (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) + 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 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $6 + 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 16192 i32.lt_s - if - local.get $6 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$739 + local.get $0 i32.const 1 i32.sub - local.tee $6 - i32.const 2 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$739 + end + local.get $7 + i32.eqz + if + local.get $6 + i32.load + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$739 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + 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.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 local.get $7 - local.get $2 - i32.sub - i32.const 2 - i32.shl + i32.mul + i32.const 10 i32.add - local.get $0 - local.get $2 - i32.const 2 + local.tee $3 + i32.const 1 i32.shl - i32.add - i32.load offset=4 - i32.store + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $4 + 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 + memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 local.get $2 i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $2 - i32.const 2 i32.shl i32.add - i32.load - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $1 + local.get $3 i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - else local.get $0 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $6 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $6 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$739 end - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $for-loop|2 + 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 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/sort/SORT (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 i64) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13855,441 +12241,626 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store + global.get $~lib/memory/__stack_pointer + local.get $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 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + block $__inlined_func$~lib/util/string/joinReferenceArray$4 (result 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 16192 + i32.lt_s br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $4 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + br $__inlined_func$~lib/util/string/joinReferenceArray$4 + end + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $3 i32.store offset=4 + i32.const 13632 + else + i32.const 11568 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray$4 + end + i32.const 11568 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 + local.get $5 + local.get $1 i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $4 - local.get $4 - local.get $3 - local.get $2 + i32.shl + i32.add i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $1 - select - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 - local.get $1 - select - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $4 - local.get $4 + i32.store local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $1 - select - i32.store offset=4 - local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13632 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 13632 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end local.get $4 - local.get $3 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end local.get $1 - select - i32.store offset=8 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + 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 $0 - i32.load - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $3 - i32.store offset=20 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 + local.get $1 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 13632 i32.store offset=12 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $4 - local.get $4 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $1 - select - i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - local.get $3 - local.get $1 - select - i32.store offset=4 - br $folding-inner0 + i32.const 13632 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $5 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - i32.shl - local.set $3 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $4 - global.get $~lib/rt/tlsf/ROOT - local.get $3 - call $~lib/rt/tlsf/allocateBlock + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.tee $13 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 i32.add - local.set $12 - loop $for-loop|1 - local.get $5 - local.get $7 - i32.gt_u - if - local.get $13 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|1 - 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 + 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.tee $4 + i32.sub + local.tee $1 + local.get $1 + i32.const 2 + 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 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.tee $3 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $1 + i32.const 2 + i32.shl + memory.copy + local.get $2 + local.get $1 + local.get $4 + i32.add + local.tee $4 + i32.ne + if + local.get $6 + local.get $3 + local.get $4 i32.const 2 i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 i32.add - local.set $11 - global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 + local.get $4 i32.sub - local.tee $14 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 + i32.const 2 + i32.shl + memory.copy + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~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 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.const 31 - local.get $14 - local.get $14 - i32.const 31 - i32.ge_s - select - local.tee $5 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $1 - loop $while-continue|2 - local.get $5 - local.get $14 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + 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 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$740 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - local.get $5 - i32.const 1 + i32.const 8 i32.add - local.tee $4 - local.get $14 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $4 - i32.sub - i32.const 1 + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$740 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $8 - i32.const 32 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$740 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 local.get $0 - local.get $4 - local.get $14 - local.get $4 - i32.const 31 + local.get $1 + i32.const 1 + i32.shl i32.add - local.tee $3 - local.get $3 - local.get $14 - i32.gt_s - select - local.tee $6 - local.get $8 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $1 - local.get $4 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $14 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $10 - i64.div_u - local.get $4 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $3 - loop $for-loop|3 local.get $3 - local.get $7 - i32.lt_u + 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 $7 - i32.const 2 + local.get $0 + local.get $1 + i32.const 1 i32.shl - local.tee $9 - local.get $13 i32.add - local.tee $8 - i32.load - local.tee $15 - i32.const -1 - i32.ne - if - local.get $9 - local.get $12 - i32.add - i32.load - i32.const 1 - i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - local.get $15 - local.get $1 - local.get $5 - local.get $11 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $8 - i32.const -1 - i32.store - local.get $15 - local.set $1 - end - local.get $7 + i32.const 11856 + local.get $4 i32.const 1 - i32.sub - local.set $7 - br $for-loop|3 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 end - end - local.get $3 - i32.const 2 - i32.shl - local.tee $7 - local.get $13 - i32.add - local.get $1 - i32.store - local.get $7 - local.get $12 - i32.add - local.get $5 - i32.store - local.get $4 - local.set $1 - local.get $6 - local.set $5 - local.get $3 - local.set $7 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $7 - if - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $13 - i32.add - i32.load - local.tee $3 - i32.const -1 - i32.ne - if - local.get $1 - local.get $12 - i32.add - i32.load + local.get $3 i32.const 1 i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - local.get $3 - local.get $1 - local.get $14 - local.get $11 - local.get $2 - call $~lib/util/sort/mergeRuns + local.set $3 + br $for-loop|0 end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|4 end + local.get $0 + local.get $1 + 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 $1 + i32.add + local.tee $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$740 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $13 - call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + 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 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + local.tee $2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + memory.copy + local.get $3 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $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 ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -14324,14 +12895,15 @@ local.get $1 i32.store local.get $1 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $start:std/array~anonymous|52 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14350,31 +12922,40 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $2 + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 0 - call $~lib/array/Array#__get - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.sub + local.get $2 + call $~lib/array/Array#lastIndexOf 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) + (func $~lib/array/Array#sort@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 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -14386,117 +12967,60 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - block $__inlined_func$std/array/isSorted<~lib/array/Array>$660 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=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 16192 - i32.lt_s - br_if $folding-inner0 - local.get $1 - local.set $0 - 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 1 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array#get:length - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $5 - local.get $1 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $5 - local.get $1 - call $~lib/array/Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $0 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array>$660 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange end + unreachable end + i32.const 10256 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1080 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 10256 + i32.store end global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.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.add global.set $~lib/memory/__stack_pointer return @@ -14508,14 +13032,9 @@ call $~lib/builtins/abort unreachable ) - (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) + (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (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 global.get $~lib/memory/__stack_pointer @@ -14530,176 +13049,176 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - local.get $0 - local.get $1 - i32.eq - i32.or - i32.or - br_if $folding-inner0 - 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 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|5 (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 i32.const 1 - i32.shr_u - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - local.tee $5 - local.get $4 - i32.or - i32.eqz - br_if $folding-inner0 - local.get $4 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return - end - local.get $5 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - 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 - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $4 - local.get $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $2 - i32.const 4 - i32.ge_u - if (result i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|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 $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-loop|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 $6 - i32.ne - if - local.get $3 - local.get $6 - 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 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - end - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - local.get $5 - i32.sub - local.get $0 - select - return + 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 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|49 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $start:std/array~anonymous|40 (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 i32.add + ) + (func $start:std/array~anonymous|38 (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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 $3 + i32.store + local.get $3 + i32.const 1 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.add ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 + local.get $1 + i32.const 100 + i32.gt_s + local.get $0 + select + ) + (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 + local.get $1 + i32.const 2 + i32.gt_s + local.get $0 + select + ) + (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + ) + (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|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.eqz + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/array + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14714,960 +13233,1635 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $5 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 11568 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $4 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $3 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $5 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $7 + i32.add + local.set $4 + end + local.get $1 + if + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $4 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 local.get $0 - local.get $1 - i32.eq if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add local.get $0 - i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - 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/util/string/compareImpl$1 (result i32) - local.get $2 - i32.const 4 - i32.ge_u - if (result i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return end + local.get $7 i32.eqz if - loop $do-loop|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + 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$485 + local.get $3 + i64.eqz if - local.get $0 - i32.const 8 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $0 + global.set $~lib/memory/__stack_pointer + i32.const 7712 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64$485 + end + local.get $3 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.wrap_i64 + 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 $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $3 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $3 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $3 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store local.get $1 - i32.const 8 - 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-loop|0 + local.get $3 + 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 end + br $folding-inner1 end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 20 + i32.add + local.get $7 + i32.mul + i32.const 20 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add local.get $0 - i32.load16_u - local.tee $3 + local.get $4 + 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 $1 - i32.load16_u - local.tee $4 - i32.ne if - local.get $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl$1 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 + local.get $4 + i32.const 1 i32.add - local.set $1 - br $while-continue|1 + local.set $4 + br $for-loop|0 end end - i32.const 0 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + 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 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 48992 + i32.const 49040 + i32.const 1 + 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 0 + local.get $1 ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 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 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$736 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - i32.const 20 + i32.const 1 i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $7 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 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 12320 + local.set $0 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + i32.const 12352 + local.set $0 + local.get $3 + local.get $3 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 12384 + i32.const 12432 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12464 + local.get $3 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 12464 + local.get $1 + memory.copy + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/string/String#concat$736 + br $folding-inner1 end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 12288 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12284 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 28 + i32.add + local.get $7 + i32.mul + i32.const 28 + i32.add + local.tee $5 + i32.const 1 + i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.store offset=4 - local.get $0 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $6 + 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.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 12288 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $6 local.get $2 - local.get $3 - memory.copy + i32.const 1 + i32.shl + i32.add local.get $0 - local.get $3 + local.get $7 + i32.const 3 + i32.shl i32.add - local.get $1 - local.get $4 - memory.copy + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner1 + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if i32.const 48992 i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.le_s - select - i32.const 1 - i32.shl - local.set $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.ge_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - i32.sub - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end - local.get $3 - i32.eqz - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.eq - i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $3 - i32.add - local.get $2 - memory.copy + i32.const 1 + 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 - local.get $1 + local.get $0 ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i32) + (local $14 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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $3 + select + local.tee $1 + local.get $4 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $2 + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $4 + local.get $2 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $3 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $9 + i32.add + local.set $10 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $9 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + 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 $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 10848 i32.store local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 + local.tee $8 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$738 + if + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store local.get $0 - i32.const 1 - i32.sub - local.tee $7 i32.const 0 + i32.const 31 + local.get $8 + local.get $8 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + loop $while-continue|2 + local.get $4 + local.get $8 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 10848 + i32.store + local.get $0 + local.get $4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$738 - end - local.get $7 - i32.eqz - if - local.get $6 - i32.load - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.tee $5 + local.get $8 + call $~lib/util/sort/extendRunRight + local.tee $3 + local.get $5 + i32.sub + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$738 - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - 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 - local.get $7 - i32.mul - i32.const 11 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 + local.tee $6 + i32.const 32 i32.lt_s if + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store local.get $0 - local.get $2 - i32.const 1 - i32.shl + local.get $5 + local.get $8 + local.get $5 + i32.const 31 i32.add + local.tee $3 + local.get $3 + local.get $8 + i32.gt_s + select + local.tee $3 local.get $6 - local.get $4 - 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 + call $~lib/util/sort/insertionSort + end + local.get $2 + local.get $5 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $8 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $12 + i64.div_u + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $12 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $6 + loop $for-loop|3 + local.get $1 + local.get $6 + i32.gt_u if - local.get $0 - local.get $2 - i32.const 1 + local.get $1 + i32.const 2 i32.shl + local.tee $13 + local.get $9 i32.add + local.tee $14 + i32.load + local.tee $7 + i32.const -1 + i32.ne + if + local.get $10 + local.get $13 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + local.get $7 + local.get $2 + local.get $4 + local.get $11 + call $~lib/util/sort/mergeRuns + local.get $14 + i32.const -1 + i32.store + local.get $7 + local.set $2 + end local.get $1 - local.get $5 i32.const 1 - i32.shl - memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 + i32.sub + local.set $1 + br $for-loop|3 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $7 - 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 $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 + i32.const 2 + i32.shl + local.tee $1 + local.get $9 + i32.add + local.get $2 i32.store - local.get $0 local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $10 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$738 + local.get $4 + i32.store + local.get $5 + local.set $2 + local.get $3 + local.set $4 + local.get $6 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $9 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $2 + local.get $10 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $8 + local.get $11 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end + local.get $11 + call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end - i32.const 48992 - i32.const 49040 - i32.const 1 - 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 ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/SORT (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 i64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $1 - 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 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$739 - local.get $0 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$739 - end - local.get $7 - i32.eqz - if - local.get $6 - i32.load - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$739 - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.le_s + if 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 - local.get $7 - i32.mul - i32.const 10 - i32.add - local.tee $3 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 - i32.lt_s - if + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $6 + i32.load + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $4 + local.get $4 + local.get $3 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 - memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $1 + select + i32.store + global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $7 - 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 $3 - i32.lt_s - if + local.get $3 + local.get $1 + select + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $4 + local.get $4 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $1 + select + i32.store offset=4 + local.get $0 + local.get $4 + local.get $3 + local.get $1 + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength local.get $0 + local.get $3 + local.get $4 + local.get $4 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $1 + select i32.store local.get $0 + local.get $4 + local.get $3 local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$739 + select + i32.store offset=4 + br $folding-inner0 end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $7 i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $5 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + local.set $3 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $3 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 + i32.add + local.set $12 + loop $for-loop|1 + local.get $5 local.get $7 - i32.eqz + i32.gt_u 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 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $13 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 i32.store - i32.const 12320 - local.set $0 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $3 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - i32.const 12352 - local.set $0 - local.get $3 - local.get $3 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 12384 - i32.const 12432 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 12464 - 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 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 12464 - local.get $1 - memory.copy - end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + 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 $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $14 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 31 + local.get $14 + local.get $14 + i32.const 31 + i32.ge_s + select + local.tee $5 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $7 + i32.const 0 + local.set $1 + loop $while-continue|2 + local.get $5 + local.get $14 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $5 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 12288 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12284 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 28 - i32.add - local.get $7 - i32.mul - i32.const 28 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 + local.tee $4 + local.get $14 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $6 local.get $4 - local.get $7 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 i32.lt_s if - local.get $6 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.shl - i32.add + i32.store offset=8 local.get $0 local.get $4 - i32.const 3 - i32.shl + local.get $14 + local.get $4 + i32.const 31 i32.add - f64.load - call $~lib/util/number/dtoa_buffered + local.tee $3 + local.get $3 + local.get $14 + i32.gt_s + select + local.tee $6 + local.get $8 local.get $2 - i32.add - local.set $2 - local.get $1 + call $~lib/util/sort/insertionSort + end + local.get $1 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $10 + i64.div_u + local.get $4 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $3 + loop $for-loop|3 + local.get $3 + local.get $7 + i32.lt_u if - local.get $6 - local.get $2 - i32.const 1 + local.get $7 + i32.const 2 i32.shl + local.tee $9 + local.get $13 i32.add - i32.const 12288 - local.get $1 + local.tee $8 + i32.load + local.tee $15 + i32.const -1 + i32.ne + if + local.get $9 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $15 + local.get $1 + local.get $5 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $8 + i32.const -1 + i32.store + local.get $15 + local.set $1 + end + local.get $7 i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 + i32.sub + local.set $7 + br $for-loop|3 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + local.get $3 + i32.const 2 + i32.shl + local.tee $7 + local.get $13 + i32.add + local.get $1 + i32.store + local.get $7 + local.get $12 + i32.add + local.get $5 + i32.store + local.get $4 + local.set $1 + local.get $6 + local.set $5 + local.get $3 + local.set $7 + br $while-continue|2 end - local.get $5 - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 + end + loop $for-loop|4 local.get $7 - 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 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner1 + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $13 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $1 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $3 + local.get $1 + local.get $14 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $11 + call $~lib/rt/tlsf/__free + local.get $13 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/SORT (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) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15682,204 +14876,426 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $5 i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end - local.get $5 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 11568 - local.get $0 - select - return - end - loop $for-loop|0 + i32.store + block $folding-inner0 local.get $1 - local.get $4 - i32.gt_s + i32.const 48 + i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store offset=4 + br $folding-inner0 + end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store local.get $3 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u i32.add - local.set $3 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $5 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=12 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $5 + local.set $3 + br $for-loop|1 + 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 $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 i32.lt_s if global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $6 + local.get $2 + i32.store + local.get $0 local.get $4 i32.const 1 - i32.shl i32.add - local.get $7 - local.get $7 - i32.const 20 + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u + i32.add local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 i32.const 1 - i32.shl - memory.copy - local.get $4 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 end + end + loop $for-loop|4 local.get $1 if - local.get $6 - local.get $4 - i32.const 1 + local.get $1 + i32.const 2 i32.shl + local.tee $3 + local.get $10 i32.add - local.get $2 + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end local.get $1 i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $4 + i32.sub + local.set $1 + br $for-loop|4 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - if + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $6 - local.get $4 - i32.const 1 - i32.shl + i32.const 4 i32.add - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 ) - (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/SORT (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 f64) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) + (local $16 f64) + (local $17 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -15898,223 +15314,418 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/string/joinStringArray - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) - 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 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f64.load + local.set $16 + local.get $0 + f64.load offset=8 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $16 + local.get $16 + local.get $17 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + f64.load offset=16 + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $16 + local.get $17 + local.get $1 + select + local.tee $16 + local.get $8 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + local.set $1 + local.get $0 + local.get $8 + local.get $16 + local.get $1 + select + f64.store offset=8 + local.get $0 + local.get $16 + local.get $8 + local.get $1 + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $8 + local.get $0 + f64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $8 + local.get $8 + local.get $16 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + local.get $8 + local.get $16 + local.get $1 + select + f64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $3 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $10 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + 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 $1 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 10544 i32.store - block $__inlined_func$~lib/util/string/joinReferenceArray$4 (result 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 16192 - i32.lt_s - br_if $folding-inner0 + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + call $~lib/util/sort/extendRunRight + local.tee $3 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i32.const 10544 + i32.store local.get $0 - i32.const 1 - i32.sub - local.tee $2 i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $3 + local.get $1 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + loop $while-continue|2 + local.get $3 + local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - br $__inlined_func$~lib/util/string/joinReferenceArray$4 - end - local.get $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $0 + i32.const 10544 i32.store local.get $0 - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 13632 - else - i32.const 11568 - end - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $3 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray$4 - end - i32.const 11568 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11568 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=4 - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $2 + local.tee $5 + local.get $9 + call $~lib/util/sort/extendRunRight + local.tee $4 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.tee $6 + i32.const 32 i32.lt_s if global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 local.get $5 - local.get $1 - i32.const 2 - i32.shl + local.get $9 + local.get $5 + i32.const 31 i32.add - i32.load - local.tee $3 - i32.store - local.get $3 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 13632 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 13632 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 - end + local.tee $4 local.get $4 + local.get $9 + i32.gt_s + select + local.tee $4 + local.get $6 + call $~lib/util/sort/insertionSort + end + local.get $2 + local.get $5 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $6 + loop $for-loop|3 + local.get $1 + local.get $6 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 11856 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $7 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + local.get $7 + local.get $2 + local.get $3 + local.get $12 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $7 + local.set $2 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 end - local.get $1 + end + local.get $6 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $2 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $5 + local.set $2 + local.get $4 + local.set $3 + local.get $6 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $10 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $2 + local.get $11 + i32.add + i32.load i32.const 1 i32.add - local.set $1 - br $for-loop|0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $9 + local.get $12 + call $~lib/util/sort/mergeRuns end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - 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 $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 13632 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 13632 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 - i32.const 1 - 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 ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + (func $~lib/util/sort/SORT (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 f32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f32) + (local $18 f32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -16133,519 +15744,1380 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 11856 - call $~lib/array/Array#join - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#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-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + f32.load offset=8 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 + local.get $2 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store offset=4 + local.get $0 + local.get $9 + local.get $18 + local.get $1 + select + f32.store offset=8 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + f32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $5 + i32.add + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 0 + local.get $1 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$740 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 - i32.const 1 - i32.sub - local.tee $6 i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$740 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$740 - end - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - local.get $6 - i32.mul - i32.const 11 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 - local.get $1 - i32.const 1 - i32.shl + local.get $6 + local.get $10 + local.get $6 + i32.const 31 i32.add - local.get $3 + local.tee $5 local.get $5 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 local.get $1 - i32.add - local.set $1 - local.get $4 + local.get $7 + i32.gt_u if - local.get $0 local.get $1 - i32.const 1 + i32.const 2 i32.shl + local.tee $15 + local.get $11 i32.add - i32.const 11856 - local.get $4 - i32.const 1 - i32.shl - memory.copy + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end local.get $1 - local.get $4 - i32.add + i32.const 1 + i32.sub local.set $1 + br $for-loop|3 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + end + loop $for-loop|4 local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$740 + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free 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 48992 - i32.const 49040 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $2 + i64.xor + local.tee $2 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $3 + i64.xor + local.tee $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub + ) + (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 + i32.const 31 + i32.shr_s i32.const 1 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_s i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s + i32.sub ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) + (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 $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + 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 + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + 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 + 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 $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 + local.get $3 + i32.const 0 + i32.gt_s + i32.and + 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 - local.tee $7 + i32.const 1 + i32.shl + 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.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end - local.get $7 - i32.eqz - if + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) local.get $0 - i64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 2 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 3014704 i32.store - block $__inlined_func$~lib/util/number/utoa64$485 + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 local.get $3 - i64.eqz + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $2 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7712 - local.set $1 - br $__inlined_func$~lib/util/number/utoa64$485 + 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 + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 local.get $3 - i64.const 4294967295 - i64.le_u + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.wrap_i64 - local.tee $0 - i32.const 100000 + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + 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 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 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add 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 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add end - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 + 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 + 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 $3 + select + i32.store16 + 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 + 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 + i32.const 4 + i32.add + local.tee $4 + 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 + i32.const 100000 + i32.lt_u + if (result i32) local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut + 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 - global.get $~lib/memory/__stack_pointer - local.get $3 - i64.const 1000000000000000 - i64.lt_u + local.get $0 + i32.const 10000000 + i32.lt_u if (result i32) - local.get $3 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $3 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $3 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $3 - i64.const 10000000000000 - i64.ge_u - i32.add - end + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add else - local.get $3 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - 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 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end + end + end + ) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i64) + local.get $2 + local.get $1 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $3 + i32.sub + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + local.tee $11 + local.get $2 + i64.and + local.set $8 + local.get $2 + local.get $1 + i64.shr_u + i32.wrap_i64 + 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 $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 $3 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000 + i32.rem_u + local.set $3 + br $break|1 + end local.get $3 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add + i32.const 1000 + i32.div_u + local.set $6 local.get $3 - i64.const 1000000000000000000 - i64.ge_u - i32.add + i32.const 1000 + i32.rem_u + local.set $3 + br $break|1 end + local.get $3 + i32.const 100 + i32.div_u + local.set $6 + local.get $3 + i32.const 100 + i32.rem_u + local.set $3 + br $break|1 end - local.tee $0 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 local.get $3 - local.get $0 - call $~lib/util/number/utoa64_dec_lut + i32.const 10 + i32.div_u + local.set $6 + local.get $3 + i32.const 10 + i32.rem_u + local.set $3 + br $break|1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + local.set $6 + i32.const 0 + local.set $3 + br $break|1 end - br $folding-inner1 + i32.const 0 + local.set $6 + end + local.get $5 + local.get $6 + i32.or + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 end - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 20 - i32.add local.get $7 - i32.mul - i32.const 20 - i32.add - local.tee $5 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 - local.get $4 + i32.sub + local.set $7 + local.get $4 + local.get $3 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $2 + i64.shl + local.get $8 + i64.add + local.tee $1 + i64.ge_u + if + global.get $~lib/util/number/_K local.get $7 - i32.lt_s - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 13392 + i32.add + i64.load32_u + local.get $2 + i64.shl + local.set $2 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $1 + local.get $9 + i64.lt_u local.get $4 - 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 $1 - if - local.get $6 + i64.sub + local.get $2 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 11856 + i64.add + local.tee $8 + i64.gt_u + local.get $9 local.get $1 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 i32.const 1 - i32.shl - memory.copy + i32.sub + local.set $7 local.get $1 local.get $2 - i32.add - local.set $2 + i64.add + local.set $1 + br $while-continue|3 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + return end + br $while-continue|0 + end + end + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $8 + i64.const 10 + i64.mul + local.tee $1 + local.get $10 + i64.extend_i32_s + i64.shr_u + local.tee $2 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 local.get $5 - local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $2 + 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 $1 + local.get $11 + i64.and + local.tee $8 + local.get $4 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 13392 + i32.add + i64.load32_u + i64.mul + local.set $1 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|6 + local.get $1 + local.get $8 + i64.gt_u + local.get $4 + local.get $8 + i64.sub + local.get $12 + i64.ge_u + i32.and + if (result i32) + local.get $1 + local.get $8 + local.get $12 + i64.add + local.tee $2 + i64.gt_u + local.get $1 + local.get $8 + i64.sub local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 + local.get $1 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if local.get $7 - 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 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $12 + i64.add + local.set $8 + br $while-continue|6 end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + ) + (func $start:std/array~anonymous|54 (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1267 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1269 + 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 + ) + (func $start:std/array~anonymous|52 (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 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|33 (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|31 (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if i32.const 48992 i32.const 49040 i32.const 1 @@ -16654,12 +17126,32 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + 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 2 + i32.ge_s ) - (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) + (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -16679,221 +17171,62 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store - local.get $0 - i32.const 11856 - call $~lib/array/Array<~lib/string/String|null>#join + local.get $2 + i32.const 100 + call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 100 + i32.eq ) - (func $~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) + (func $start:std/array~anonymous|29 (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - 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 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$743 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$743 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 - end - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - local.get $6 - i32.mul - i32.const 10 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_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 11856 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - 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 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - 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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + ) + (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -16913,247 +17246,158 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i local.get $0 - i32.const 11856 - call $~lib/array/Array#join + i32.add + global.set $std/array/i global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + local.get $0 + f32.convert_i32_s + ) + (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + call $~lib/util/number/itoa32 + ) + (func $start:std/array~anonymous|24 (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 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 (result 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 16192 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - local.get $0 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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.eqz + if + loop $for-loop|0 + local.get $3 + i32.const 4 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + local.set $3 + br $for-loop|0 end - local.get $4 - i32.eqz + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + i32.const 100 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $0 + local.get $2 i32.store - local.get $0 - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/array/Array#toString - else - i32.const 11568 - end - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $2 + local.get $3 + i32.const 100 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 - end - i32.const 11568 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11568 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=4 - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $6 - call $~lib/array/Array#toString - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 - end - local.get $2 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 11856 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end + call $~lib/array/Array#push + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - 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 $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + end + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + i32.const 100 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - call $~lib/array/Array#toString - local.set $1 + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 100 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 + local.get $2 + i32.store + local.get $2 + local.get $3 + i32.const 200 + i32.add + call $~lib/array/Array#push + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|3 end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 2 + i32.eq + local.get $0 + i32.const 202 + i32.ne + i32.and + if + i32.const 0 + i32.const 1552 + i32.const 767 + i32.const 7 + 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/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) + (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17168,129 +17412,96 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - local.get $0 - i32.load offset=4 - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i local.get $0 - i32.load offset=12 - local.set $4 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - if (result i32) - local.get $5 - i32.load offset=12 - else - i32.const 0 - end - local.get $2 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end + i32.add + global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=8 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + 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 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=4 - local.get $0 - local.get $6 i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i local.get $0 - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - i32.const 0 - local.set $2 - loop $for-loop|1 - 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.tee $5 - if - local.get $1 - local.get $6 - i32.add - local.get $5 - i32.load offset=4 - local.get $5 - i32.load offset=12 - i32.const 2 - i32.shl - local.tee $5 - 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 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|19 (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 + i32.const 3 + i32.gt_s ) - (func $start:std/array~anonymous|54 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -17310,63 +17521,125 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.ne + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.lt_s + ) + (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.ge_s + ) + (func $start:std/array~anonymous|14 (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 1267 - i32.const 5 + i32.const 48992 + i32.const 49040 + 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.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/array/Array#get:length - i32.const 2 - i32.ne + i32.const 3 + i32.lt_s + ) + (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|12 (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 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 1269 - i32.const 5 + i32.const 48992 + i32.const 49040 + 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 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.le_s + ) + (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.ge_s ) (func $start:std/array (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) - (local $5 i64) - (local $6 f64) - (local $7 f32) + (local $5 f64) + (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) global.get $~lib/memory/__stack_pointer i32.const 444 i32.sub @@ -17417,9 +17690,9 @@ global.set $std/array/arr i32.const 0 call $std/array/Ref#constructor - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 @@ -17436,11 +17709,11 @@ i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 16 @@ -17456,87 +17729,87 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - local.get $2 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=12 - local.get $2 - local.get $9 + local.get $1 + local.get $8 i32.store - local.get $2 - local.get $9 + local.get $1 + local.get $8 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 - local.get $9 + local.get $1 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.eqz if i32.const 0 @@ -17552,30 +17825,30 @@ i32.const 7 i32.const 1696 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1728 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17587,28 +17860,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1760 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17620,27 +17893,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1792 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17652,28 +17925,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 2 i32.const -2 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1824 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17685,27 +17958,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1856 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17717,28 +17990,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const -1 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1888 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17755,30 +18028,30 @@ i32.const 8 i32.const 1920 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 1968 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17790,28 +18063,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2016 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17823,27 +18096,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2064 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17855,28 +18128,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 2 i32.const -2 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2112 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17888,27 +18161,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2160 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17920,28 +18193,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const -1 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2208 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17958,30 +18231,30 @@ i32.const 9 i32.const 2256 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 f32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2304 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17993,28 +18266,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 f32.const 0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2352 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18026,27 +18299,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 f32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2400 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18058,28 +18331,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 f32.const 2 i32.const -2 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2448 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18091,27 +18364,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 f32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2496 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18123,28 +18396,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 f32.const -1 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2544 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18156,28 +18429,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 f32.const -0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2592 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18190,9 +18463,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -18204,9 +18477,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18220,16 +18493,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 42 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -18244,9 +18517,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 1 i32.ne @@ -18260,9 +18533,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18276,9 +18549,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#pop i32.const 42 i32.ne @@ -18292,9 +18565,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -18306,9 +18579,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18322,16 +18595,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 43 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 1 i32.ne @@ -18345,9 +18618,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18361,9 +18634,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18378,16 +18651,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 44 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -18401,9 +18674,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18417,9 +18690,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18434,9 +18707,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -18451,16 +18724,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 45 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -18474,9 +18747,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18490,9 +18763,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18507,9 +18780,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -18524,9 +18797,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -18546,22 +18819,22 @@ i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $8 + local.tee $7 i32.store offset=20 - local.get $8 + local.get $7 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $8 + local.get $7 i32.const 1 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $8 + local.get $7 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -18574,14 +18847,14 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $8 + local.get $7 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -18589,9 +18862,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length if i32.const 0 @@ -18607,12 +18880,12 @@ i32.const 4 i32.const 2688 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=28 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#at i32.const 1 @@ -18626,9 +18899,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 3 call $~lib/array/Array#at i32.const 4 @@ -18642,9 +18915,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const -1 call $~lib/array/Array#at i32.const 4 @@ -18658,9 +18931,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const -4 call $~lib/array/Array#at i32.const 1 @@ -18676,26 +18949,26 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/array/Array#constructor - local.tee $2 + local.tee $1 i32.store offset=32 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $8 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 - local.get $2 + local.get $7 + local.get $1 call $~lib/array/Array#concat - local.tee $8 + local.tee $7 i32.store offset=36 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $9 + local.tee $8 i32.store - local.get $9 + local.get $8 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18709,9 +18982,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $9 + local.tee $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -18724,9 +18997,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -18739,26 +19012,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 0 i32.const 2 i32.const 4 i32.const 2736 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 call $~lib/array/Array#concat drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $9 + local.tee $8 i32.store - local.get $9 + local.get $8 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18771,9 +19044,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18787,9 +19060,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -18803,9 +19076,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -18819,35 +19092,35 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 46 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 47 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $8 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 - local.get $2 + local.get $7 + local.get $1 call $~lib/array/Array#concat - local.tee $8 + local.tee $7 i32.store offset=36 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $9 + local.tee $8 i32.store - local.get $9 + local.get $8 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18860,9 +19133,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -18875,9 +19148,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length i32.const 5 i32.ne @@ -18890,9 +19163,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18906,9 +19179,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -18922,9 +19195,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -18938,9 +19211,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 3 call $~lib/array/Array#__get i32.const 46 @@ -18954,9 +19227,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 4 call $~lib/array/Array#__get i32.const 47 @@ -18970,15 +19243,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -18996,12 +19269,12 @@ i32.const 4 i32.const 2768 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=40 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -19012,22 +19285,22 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $8 + local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $~lib/array/Array#concat - local.tee $8 + local.tee $7 i32.store offset=36 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -19040,9 +19313,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -19058,32 +19331,32 @@ i32.const 4 i32.const 2800 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 2848 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19101,32 +19374,32 @@ i32.const 4 i32.const 2896 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 1 i32.const 3 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 2944 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19144,32 +19417,32 @@ i32.const 4 i32.const 2992 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3040 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $2 - local.get $8 + local.get $7 + i32.store offset=8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19187,32 +19460,32 @@ i32.const 4 i32.const 3088 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 2 i32.const 2 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3136 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19230,31 +19503,31 @@ i32.const 4 i32.const 3184 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const 0 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3232 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19272,31 +19545,31 @@ i32.const 4 i32.const 3280 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const 1 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3328 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19314,31 +19587,31 @@ i32.const 4 i32.const 3376 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const 1 i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3424 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19356,32 +19629,32 @@ i32.const 4 i32.const 3472 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 0 i32.const -2 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3520 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19399,31 +19672,31 @@ i32.const 4 i32.const 3568 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const 0 i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3616 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19441,31 +19714,31 @@ i32.const 4 i32.const 3664 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const -4 i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3712 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19483,31 +19756,31 @@ i32.const 4 i32.const 3760 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const -4 i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3808 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19525,32 +19798,32 @@ i32.const 4 i32.const 3856 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const -4 i32.const -3 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3904 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19564,16 +19837,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 42 call $~lib/array/Array#unshift global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -19587,9 +19860,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -19603,9 +19876,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -19620,9 +19893,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -19637,9 +19910,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -19654,9 +19927,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -19671,16 +19944,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 41 call $~lib/array/Array#unshift global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 5 i32.ne @@ -19694,9 +19967,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -19710,9 +19983,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 41 @@ -19727,9 +20000,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -19744,9 +20017,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 43 @@ -19761,9 +20034,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 44 @@ -19778,9 +20051,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 4 call $~lib/array/Array#__get i32.const 45 @@ -19795,7 +20068,7 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -19809,11 +20082,11 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=12 - local.tee $8 + local.tee $7 i32.const 0 i32.le_s if @@ -19825,34 +20098,34 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.tee $9 + local.tee $8 i32.load - local.get $9 - local.get $9 + local.get $8 + local.get $8 i32.const 4 i32.add - local.get $8 + local.get $7 i32.const 1 i32.sub - local.tee $8 + local.tee $7 i32.const 2 i32.shl - local.tee $11 + local.tee $10 memory.copy - local.get $9 - local.get $11 + local.get $8 + local.get $10 i32.add i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -19872,9 +20145,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -19888,9 +20161,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -19904,9 +20177,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -19921,9 +20194,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -19938,9 +20211,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -19955,9 +20228,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -19972,9 +20245,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#pop global.set $std/array/i global.get $std/array/i @@ -19990,9 +20263,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -20006,9 +20279,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -20022,9 +20295,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -20039,9 +20312,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -20056,9 +20329,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -20077,33 +20350,33 @@ i32.const 4 i32.const 3952 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=52 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#slice@varargs - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 3 i32.const 2 i32.const 4 i32.const 4000 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20116,29 +20389,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 i32.const 4 call $~lib/array/Array#slice - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 4032 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20151,29 +20424,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 i32.const 5 call $~lib/array/Array#slice - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 4 i32.const 2 i32.const 4 i32.const 4064 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20186,24 +20459,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#slice@varargs - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $8 - local.get $2 + local.get $7 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20216,30 +20489,30 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const -2 call $~lib/array/Array#slice@varargs - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 4112 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20252,29 +20525,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 i32.const -1 call $~lib/array/Array#slice - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 4144 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20287,29 +20560,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const -3 i32.const -1 call $~lib/array/Array#slice - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 4176 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20322,17 +20595,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const -1 i32.const -3 call $~lib/array/Array#slice - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length if i32.const 0 @@ -20343,18 +20616,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 10 call $~lib/array/Array#slice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -20366,7 +20639,7 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -20380,54 +20653,54 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.gt_u if - local.get $2 + local.get $1 i32.const 1 i32.shr_u - local.set $9 - local.get $2 + local.set $8 + local.get $1 i32.const 1 i32.sub - local.set $2 + local.set $1 loop $while-continue|0 local.get $4 - local.get $9 + local.get $8 i32.lt_u if - local.get $8 + local.get $7 local.get $4 i32.const 2 i32.shl i32.add - local.tee $10 + local.tee $9 i32.load - local.set $11 - local.get $10 - local.get $8 - local.get $2 + local.set $10 + local.get $9 + local.get $7 + local.get $1 local.get $4 i32.sub i32.const 2 i32.shl i32.add - local.tee $10 + local.tee $9 i32.load i32.store + local.get $9 local.get $10 - local.get $11 i32.store local.get $4 i32.const 1 @@ -20443,9 +20716,9 @@ global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -20459,9 +20732,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -20475,9 +20748,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 44 @@ -20492,9 +20765,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -20509,9 +20782,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 42 @@ -20526,16 +20799,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 43 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 44 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer @@ -20550,12 +20823,12 @@ i32.store local.get $4 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=60 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|0 @@ -20564,15 +20837,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20600,20 +20873,20 @@ i32.const 7 i32.const 4240 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=64 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|1 @@ -20622,15 +20895,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20658,20 +20931,20 @@ i32.const 7 i32.const 4272 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=68 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|2 @@ -20680,15 +20953,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20716,20 +20989,20 @@ i32.const 11 i32.const 4320 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=72 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|3 @@ -20738,15 +21011,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20774,20 +21047,20 @@ i32.const 11 i32.const 4368 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=76 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|4 @@ -20796,15 +21069,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20832,20 +21105,20 @@ i32.const 11 i32.const 4416 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=80 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|5 @@ -20854,15 +21127,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -21087,9 +21360,9 @@ i32.const 9 i32.const 4464 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 local.set $0 @@ -21105,10 +21378,10 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store block $__inlined_func$~lib/array/Array#indexOf$714 - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.eqz @@ -21126,17 +21399,17 @@ br $__inlined_func$~lib/array/Array#indexOf$714 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 + local.set $1 loop $while-continue|05 local.get $0 local.get $4 i32.lt_s if - local.get $2 + local.get $1 local.get $0 i32.const 2 i32.shl @@ -21181,9 +21454,9 @@ i32.const 12 i32.const 4496 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 local.set $0 @@ -21199,10 +21472,10 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store block $__inlined_func$~lib/array/Array#indexOf$715 - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.eqz @@ -21220,17 +21493,17 @@ br $__inlined_func$~lib/array/Array#indexOf$715 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 + local.set $1 loop $while-continue|07 local.get $0 local.get $4 i32.lt_s if - local.get $2 + local.get $1 local.get $0 i32.const 3 i32.shl @@ -21554,33 +21827,33 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 4576 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + 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 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store block $__inlined_func$~lib/array/Array#includes$716 (result i32) - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 4576 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - 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 16192 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.eqz @@ -21597,24 +21870,24 @@ br $__inlined_func$~lib/array/Array#includes$716 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 + local.set $1 loop $while-continue|09 local.get $0 local.get $4 i32.lt_s if - local.get $2 + local.get $1 local.get $0 i32.const 2 i32.shl i32.add f32.load - local.tee $7 - local.get $7 + local.tee $6 + local.get $6 f32.ne if global.get $~lib/memory/__stack_pointer @@ -21646,33 +21919,33 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + i32.const 3 + i32.const 12 + i32.const 4608 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + 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 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store block $__inlined_func$~lib/array/Array#includes$717 (result i32) - i32.const 1 - i32.const 3 - i32.const 12 - i32.const 4608 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - 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 16192 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.eqz @@ -21689,24 +21962,24 @@ br $__inlined_func$~lib/array/Array#includes$717 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 + local.set $1 loop $while-continue|011 local.get $0 local.get $4 i32.lt_s if - local.get $2 + local.get $1 local.get $0 i32.const 3 i32.shl i32.add f64.load - local.tee $6 - local.get $6 + local.tee $5 + local.get $5 f64.ne if global.get $~lib/memory/__stack_pointer @@ -21829,9 +22102,9 @@ local.get $0 i32.const 0 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -21842,7 +22115,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -21863,12 +22136,12 @@ i32.const 4 i32.const 4736 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21895,9 +22168,9 @@ i32.const 0 i32.const 0 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -21908,7 +22181,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -21929,12 +22202,12 @@ i32.const 4 i32.const 4848 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21962,9 +22235,9 @@ local.get $0 i32.const 2 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 3 i32.const 2 @@ -21975,7 +22248,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -21996,12 +22269,12 @@ i32.const 4 i32.const 4976 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22028,9 +22301,9 @@ i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 i32.const 2 @@ -22041,7 +22314,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22062,12 +22335,12 @@ i32.const 4 i32.const 5088 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22094,9 +22367,9 @@ i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22107,7 +22380,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22128,12 +22401,12 @@ i32.const 4 i32.const 5200 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22161,9 +22434,9 @@ local.get $0 i32.const -1 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22174,7 +22447,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22195,12 +22468,12 @@ i32.const 4 i32.const 5328 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22228,9 +22501,9 @@ local.get $0 i32.const -2 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 i32.const 2 @@ -22241,7 +22514,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22262,12 +22535,12 @@ i32.const 4 i32.const 5456 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22294,9 +22567,9 @@ i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22307,7 +22580,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22328,12 +22601,12 @@ i32.const 4 i32.const 5568 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22360,9 +22633,9 @@ i32.const -7 i32.const 1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22373,7 +22646,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22394,12 +22667,12 @@ i32.const 4 i32.const 5696 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22426,9 +22699,9 @@ i32.const -2 i32.const -1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22439,7 +22712,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22460,12 +22733,12 @@ i32.const 4 i32.const 5824 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22492,9 +22765,9 @@ i32.const 1 i32.const -2 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22505,7 +22778,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22526,12 +22799,12 @@ i32.const 4 i32.const 5952 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22558,9 +22831,9 @@ i32.const 4 i32.const 0 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22571,7 +22844,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22592,12 +22865,12 @@ i32.const 4 i32.const 6080 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22624,9 +22897,9 @@ i32.const 7 i32.const 0 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22637,7 +22910,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22658,12 +22931,12 @@ i32.const 4 i32.const 6208 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22690,9 +22963,9 @@ i32.const 7 i32.const 5 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22703,7 +22976,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22724,12 +22997,12 @@ i32.const 4 i32.const 6336 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22756,12 +23029,12 @@ local.get $0 i32.const 1 call $~lib/array/Array#splice - local.tee $2 + local.tee $1 i32.store offset=96 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -22791,40 +23064,40 @@ i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=100 - local.get $2 + local.get $1 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 3 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 3 i32.const 4 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 4 i32.const 5 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.store offset=92 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#splice local.tee $0 @@ -22889,9 +23162,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -22904,9 +23177,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get local.set $0 @@ -22926,9 +23199,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get local.set $0 @@ -22948,9 +23221,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get local.set $0 @@ -22976,27 +23249,27 @@ i32.const 13 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=104 - local.get $2 + local.get $1 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 0 call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.store offset=108 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 @@ -23010,9 +23283,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.const 0 @@ -23020,88 +23293,88 @@ i32.const 0 i32.le_s select - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 1 local.get $4 - local.get $8 + local.get $7 i32.sub - local.tee $9 - local.get $9 + local.tee $8 + local.get $8 i32.const 1 i32.gt_s select - local.tee $9 + local.tee $8 i32.const 0 - local.get $9 + local.get $8 i32.const 0 i32.gt_s select - local.tee $9 + local.tee $8 i32.const 2 i32.const 13 i32.const 0 call $~lib/rt/__newArray - local.tee $10 + local.tee $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.tee $11 - local.get $8 + local.tee $10 + local.get $7 i32.const 2 i32.shl i32.add - local.tee $12 - local.get $9 + local.tee $11 + local.get $8 i32.const 2 i32.shl memory.copy + local.get $7 local.get $8 - local.get $9 i32.add - local.tee $8 + local.tee $7 local.get $4 i32.ne if - local.get $12 local.get $11 - local.get $8 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add local.get $4 - local.get $8 + local.get $7 i32.sub i32.const 2 i32.shl memory.copy end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $4 - local.get $9 + local.get $8 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=112 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:length i32.const 1 i32.ne @@ -23114,10 +23387,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.const 0 call $~lib/array/Array#__get local.tee $0 @@ -23148,9 +23421,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -23163,9 +23436,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get if @@ -23177,10 +23450,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get local.tee $0 @@ -24075,9 +24348,9 @@ if global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#pop drop local.get $0 @@ -24118,7 +24391,7 @@ global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 9296 @@ -24138,74 +24411,74 @@ i64.const 0 i64.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load offset=12 - local.tee $8 + local.tee $7 i32.const 2 i32.const 16 i32.const 0 call $~lib/rt/__newArray - local.tee $9 + local.tee $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load offset=4 - local.set $10 + local.set $9 i32.const 0 local.set $4 loop $for-loop|012 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store local.get $4 - local.get $8 - local.get $2 + local.get $7 + local.get $1 i32.load offset=12 - local.tee $11 - local.get $8 - local.get $11 + local.tee $10 + local.get $7 + local.get $10 i32.lt_s select i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $4 i32.const 2 i32.shl - local.tee $11 - local.get $2 + local.tee $10 + local.get $1 i32.load offset=4 i32.add i32.load - local.set $12 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 3 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $11 local.get $4 - local.get $2 + local.get $1 i32.const 9296 i32.load call_indirect (type $1) - local.tee $12 + local.tee $11 i32.store offset=12 + local.get $9 local.get $10 - local.get $11 i32.add - local.get $12 + local.get $11 i32.store - local.get $9 - local.get $12 + local.get $8 + local.get $11 i32.const 1 call $~lib/rt/itcms/__link local.get $4 @@ -24219,12 +24492,12 @@ i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=128 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 9328 @@ -24244,67 +24517,67 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load offset=12 - local.tee $8 + local.tee $7 i32.const 2 i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $9 + local.tee $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load offset=4 - local.set $10 + local.set $9 i32.const 0 local.set $4 loop $for-loop|013 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store local.get $4 - local.get $8 - local.get $2 + local.get $7 + local.get $1 i32.load offset=12 - local.tee $11 - local.get $8 - local.get $11 + local.tee $10 + local.get $7 + local.get $10 i32.lt_s select i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $4 i32.const 2 i32.shl - local.tee $11 - local.get $2 + local.tee $10 + local.get $1 i32.load offset=4 i32.add i32.load - local.set $12 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 3 global.set $~argumentsLength + local.get $9 local.get $10 - local.get $11 i32.add - local.get $12 + local.get $11 local.get $4 - local.get $2 + local.get $1 i32.const 9328 i32.load - call_indirect (type $15) + call_indirect (type $17) f32.store local.get $4 i32.const 1 @@ -24317,12 +24590,12 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=132 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -24335,9 +24608,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.const 0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer @@ -25145,26 +25418,26 @@ i64.const -7046029254386353131 call $~lib/bindings/dom/Math.random i64.reinterpret_f64 - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.eqz select - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor i64.const -49064778989728563 i64.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor i64.const -4265267296055464877 i64.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor @@ -25172,22 +25445,22 @@ global.get $~lib/math/random_state0_64 i64.const -1 i64.xor - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor i64.const -49064778989728563 i64.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor i64.const -4265267296055464877 i64.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor @@ -25204,243 +25477,243 @@ i32.store offset=140 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=144 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store offset=4 local.get $0 i32.const 0 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=148 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store offset=4 local.get $0 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=152 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 95 i32.store offset=4 local.get $0 i32.const 2 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store offset=4 local.get $0 i32.const 3 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=160 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store offset=4 local.get $0 i32.const 4 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=164 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 115 i32.store offset=4 local.get $0 i32.const 5 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=168 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 120 i32.store offset=4 local.get $0 i32.const 6 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=172 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 125 i32.store offset=4 local.get $0 i32.const 7 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=176 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 130 i32.store offset=4 local.get $0 i32.const 8 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=180 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 135 i32.store offset=4 local.get $0 i32.const 9 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=184 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 75 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 10 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=188 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 11 - local.get $2 + local.get $1 call $~lib/array/Array#__set local.get $0 global.set $std/array/inputStabArr @@ -25454,243 +25727,243 @@ i32.store offset=192 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=196 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 95 i32.store offset=4 local.get $0 i32.const 0 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=200 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 125 i32.store offset=4 local.get $0 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=204 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 130 i32.store offset=4 local.get $0 i32.const 2 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=208 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 3 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=212 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 75 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 4 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=216 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store offset=4 local.get $0 i32.const 5 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=220 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store offset=4 local.get $0 i32.const 6 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=224 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store offset=4 local.get $0 i32.const 7 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=228 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store offset=4 local.get $0 i32.const 8 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=232 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 120 i32.store offset=4 local.get $0 i32.const 9 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=236 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 135 i32.store offset=4 local.get $0 i32.const 10 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=240 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 115 i32.store offset=4 local.get $0 i32.const 11 - local.get $2 + local.get $1 call $~lib/array/Array#__set local.get $0 global.set $std/array/outputStabArr @@ -25717,12 +25990,12 @@ i32.const 9 i32.const 10288 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -25756,12 +26029,12 @@ i32.const 9 i32.const 10384 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -25778,10 +26051,10 @@ i32.const 12 i32.const 10448 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=252 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 global.set $~argumentsLength @@ -25803,7 +26076,7 @@ i32.const 10544 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 10544 @@ -25820,14 +26093,14 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load offset=12 global.get $~lib/memory/__stack_pointer i32.const 10544 @@ -25842,20 +26115,20 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 8 i32.const 3 i32.const 12 i32.const 10576 call $~lib/rt/__newArray - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 block $__inlined_func$std/array/isArraysEqual$7 (result i32) i32.const 0 - local.set $0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25868,48 +26141,48 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 call $~lib/array/Array#get:length - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store block $folding-inner1 block $folding-inner01 - local.get $4 + local.get $1 call $~lib/array/Array#get:length - local.get $8 + local.get $7 i32.ne br_if $folding-inner01 - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.eq br_if $folding-inner1 loop $for-loop|02 - local.get $0 - local.get $8 + local.get $4 + local.get $7 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $4 call $~lib/array/Array#__get - local.tee $6 - local.get $6 + local.tee $5 + local.get $5 f64.ne if (result i32) global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store + local.get $1 local.get $4 - local.get $0 call $~lib/array/Array#__get - local.tee $6 - local.get $6 + local.tee $5 + local.get $5 f64.ne else i32.const 0 @@ -25917,20 +26190,20 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $4 call $~lib/array/Array#__get i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store + local.get $1 local.get $4 - local.get $0 call $~lib/array/Array#__get i64.reinterpret_f64 i64.const 63 @@ -25939,26 +26212,26 @@ i32.ne br_if $folding-inner01 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $4 call $~lib/array/Array#__get - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store + local.get $1 local.get $4 - local.get $0 call $~lib/array/Array#__get - local.get $6 + local.get $5 f64.ne br_if $folding-inner01 end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|02 end end @@ -26038,12 +26311,12 @@ i32.const 4 i32.const 10752 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26132,12 +26405,12 @@ i32.const 8 i32.const 10880 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -26154,7 +26427,7 @@ i32.const 4 i32.const 10928 call $~lib/rt/__newArray - local.tee $4 + local.tee $1 i32.store offset=264 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -26162,7 +26435,7 @@ i32.const 4 i32.const 10960 call $~lib/rt/__newArray - local.tee $8 + local.tee $4 i32.store offset=268 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -26170,7 +26443,7 @@ i32.const 4 i32.const 10992 call $~lib/rt/__newArray - local.tee $9 + local.tee $7 i32.store offset=272 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26178,7 +26451,7 @@ i32.const 4 i32.const 11024 call $~lib/rt/__newArray - local.tee $10 + local.tee $8 i32.store offset=276 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26186,57 +26459,57 @@ i32.const 4 i32.const 11072 call $~lib/rt/__newArray - local.tee $11 + local.tee $9 i32.store offset=280 global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $12 + local.tee $10 i32.store offset=284 global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray - local.tee $13 + local.tee $11 i32.store offset=288 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray - local.tee $14 + local.tee $12 i32.store offset=292 global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray - local.tee $0 + local.tee $13 i32.store offset=296 global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray - local.tee $2 + local.tee $0 i32.store offset=300 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store - local.get $4 + local.get $1 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $4 i32.store - local.get $8 + local.get $4 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $4 i32.store i32.const 1 i32.const 2 i32.const 4 i32.const 11152 call $~lib/rt/__newArray - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 - local.get $8 local.get $4 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26249,24 +26522,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $7 i32.store - local.get $9 + local.get $7 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 11184 call $~lib/rt/__newArray - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 - local.get $9 - local.get $4 + local.get $7 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26279,18 +26552,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $8 i32.store - local.get $10 + local.get $8 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $10 - local.get $11 + local.get $8 + local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26303,18 +26576,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $10 i32.store - local.get $12 + local.get $10 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $10 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $12 - local.get $11 + local.get $10 + local.get $9 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -26327,18 +26600,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $11 i32.store - local.get $13 + local.get $11 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $11 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $13 local.get $11 + local.get $9 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -26351,18 +26624,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $12 i32.store - local.get $14 + local.get $12 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $12 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $14 - local.get $11 + local.get $12 + local.get $9 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -26375,18 +26648,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $13 i32.store - local.get $0 + local.get $13 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $13 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $0 - local.get $11 + local.get $13 + local.get $9 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -26399,9 +26672,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer i32.const 24 @@ -26458,10 +26731,10 @@ i32.const 0 i32.le_s select - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer local.get $4 - local.get $8 + local.get $7 i32.sub local.tee $4 i32.const 0 @@ -26474,24 +26747,24 @@ i32.const 23 i32.const 0 call $~lib/rt/__newArray - local.tee $9 + local.tee $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load offset=4 - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 - local.get $8 + local.get $7 i32.const 2 i32.shl i32.add - local.set $8 + local.set $7 i32.const 0 local.set $0 local.get $4 @@ -26504,16 +26777,16 @@ i32.lt_u if local.get $0 - local.get $10 + local.get $9 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load - local.tee $11 + local.tee $10 i32.store - local.get $9 - local.get $11 + local.get $8 + local.get $10 i32.const 1 call $~lib/rt/itcms/__link local.get $0 @@ -26532,12 +26805,12 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store global.get $~lib/memory/__stack_pointer i32.const 11216 i32.store offset=4 - local.get $9 + local.get $8 i32.const 11216 call $~lib/array/Array#sort local.tee $0 @@ -26546,15 +26819,15 @@ local.set $4 global.get $~lib/memory/__stack_pointer global.get $std/array/inputStabArr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length - local.set $2 + local.set $1 loop $for-loop|014 local.get $1 local.get $2 - i32.lt_s + i32.gt_s if block $for-break0 global.get $~lib/memory/__stack_pointer @@ -26562,43 +26835,43 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 + local.get $2 call $~lib/array/Array#__get - local.tee $8 + local.tee $7 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/outputStabArr - local.tee $9 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $9 - local.get $1 + local.get $8 + local.get $2 call $~lib/array/Array#__get - local.tee $9 + local.tee $8 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.load global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load i32.ne if (result i32) i32.const 1 else global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load offset=4 i32.ne end @@ -26607,10 +26880,10 @@ local.set $4 br $for-break0 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|014 end end @@ -26943,9 +27216,9 @@ local.get $2 i32.store i32.const 0 - local.set $0 + local.set $4 loop $for-loop|06 - local.get $0 + local.get $4 i32.const 512 i32.lt_s if @@ -26967,14 +27240,14 @@ i32.const 4 i32.const 31 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=4 - local.get $4 + local.get $1 i32.const 511 - local.get $0 + local.get $4 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -26982,16 +27255,16 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 local.get $2 - local.get $0 local.get $4 + local.get $1 call $~lib/array/Array#__set - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|06 end end @@ -27024,7 +27297,7 @@ i32.const 34 i32.const 11648 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=324 global.get $~lib/memory/__stack_pointer local.get $0 @@ -27046,16 +27319,46 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11696 + i32.const 11696 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store offset=8 + 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 16192 + i32.lt_s + br_if $folding-inner2 + 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.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store offset=12 + local.get $0 + i32.const 11696 + call $~lib/array/Array#sort + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer i32.const 11696 - i32.store offset=8 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -27066,78 +27369,48 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $7 block $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 11696 - i32.store offset=12 - local.get $0 - i32.const 11696 - call $~lib/array/Array#sort - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11696 - i32.store offset=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 16192 - i32.lt_s - br_if $folding-inner2 - 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 1 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - local.set $8 loop $for-loop|07 - local.get $1 - local.get $8 + local.get $2 + local.get $7 i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 local.get $4 - local.get $1 + local.get $2 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 local.get $4 - local.get $1 + local.get $2 call $~lib/array/Array#__get - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=4 i32.const 2 global.set $~argumentsLength + local.get $8 local.get $9 - local.get $10 i32.const 11696 i32.load call_indirect (type $0) @@ -27151,10 +27424,10 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|07 end end @@ -27181,37 +27454,37 @@ i32.const 12 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 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $4 i32.ne @@ -27224,7 +27497,7 @@ br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 end local.get $0 - local.get $2 + local.get $1 i32.eq if global.get $~lib/memory/__stack_pointer @@ -27235,9 +27508,9 @@ br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 end i32.const 0 - local.set $1 + local.set $2 loop $for-loop|08 - local.get $1 + local.get $2 local.get $4 i32.lt_s if @@ -27245,21 +27518,21 @@ local.get $0 i32.store offset=8 local.get $0 - local.get $1 + local.get $2 call $~lib/array/Array#__get - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 local.get $1 + local.get $2 call $~lib/array/Array#__get - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -27273,13 +27546,13 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 + local.get $7 local.get $8 - local.get $9 call $~lib/string/String.__eq i32.eqz global.get $~lib/memory/__stack_pointer @@ -27294,10 +27567,10 @@ i32.const 0 br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|08 end end @@ -27350,34 +27623,34 @@ i32.const 16 i32.const 16 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 0 i32.store - local.get $9 + local.get $8 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -27387,41 +27660,41 @@ local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $9 + local.get $8 local.get $1 i32.store - local.get $9 + local.get $8 local.get $1 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 1600 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 400 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store i32.const 0 local.set $4 @@ -27431,13 +27704,13 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 call $~lib/math/NativeMath.random f64.const 32 f64.mul i32.trunc_sat_f64_s - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -27458,10 +27731,10 @@ i32.const 11568 i32.store i32.const 0 - local.set $1 + local.set $2 loop $for-loop|00 - local.get $1 - local.get $10 + local.get $2 + local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer @@ -27477,7 +27750,7 @@ f64.mul f64.floor i32.trunc_sat_f64_s - local.set $12 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -27493,7 +27766,7 @@ i32.const 10032 i32.store block $__inlined_func$~lib/string/String#charAt$737 - local.get $12 + local.get $11 i32.const 10028 i32.load i32.const 1 @@ -27505,17 +27778,17 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $1 br $__inlined_func$~lib/string/String#charAt$737 end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $2 - local.get $12 + local.get $1 + local.get $11 i32.const 1 i32.shl i32.const 10032 @@ -27528,17 +27801,17 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $~lib/string/String.__concat local.tee $0 i32.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|00 end end @@ -27549,7 +27822,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $9 + local.get $8 local.get $4 local.get $0 call $~lib/array/Array#__set @@ -27564,10 +27837,10 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=328 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store i32.const 1 global.set $~argumentsLength @@ -27589,12 +27862,12 @@ i32.const 11728 i32.store global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 11728 i32.store offset=8 - local.get $9 + local.get $8 i32.const 11728 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -27626,7 +27899,7 @@ i32.store local.get $0 i32.load offset=4 - local.set $8 + local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -27637,7 +27910,7 @@ i32.const 11856 i32.store i32.const 0 - local.set $1 + local.set $2 i32.const 0 local.set $4 global.get $~lib/memory/__stack_pointer @@ -27655,7 +27928,7 @@ local.get $0 i32.const 1 i32.sub - local.tee $0 + local.tee $7 i32.const 0 i32.lt_s if @@ -27664,19 +27937,19 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinBooleanArray$12 end block $folding-inner07 - local.get $0 + local.get $7 i32.eqz if i32.const 11792 i32.const 11824 - local.get $8 + local.get $1 i32.load8_u select - local.set $2 + local.set $0 br $folding-inner07 end global.get $~lib/memory/__stack_pointer @@ -27687,67 +27960,67 @@ i32.load i32.const 1 i32.shr_u - local.tee $9 + local.tee $8 i32.const 5 i32.add - local.get $0 + local.get $7 i32.mul i32.const 5 i32.add - local.tee $10 + local.tee $9 i32.const 1 i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store offset=4 loop $for-loop|18 - local.get $0 local.get $4 - i32.gt_s + local.get $7 + i32.lt_s if + local.get $1 local.get $4 - local.get $8 i32.add i32.load8_u - local.tee $11 + local.tee $10 i32.eqz i32.const 4 i32.add - local.set $12 + local.set $11 + local.get $0 local.get $2 - local.get $1 i32.const 1 i32.shl i32.add i32.const 11792 i32.const 11824 - local.get $11 + local.get $10 select - local.get $12 + local.get $11 i32.const 1 i32.shl memory.copy - local.get $1 - local.get $12 + local.get $2 + local.get $11 i32.add - local.set $1 - local.get $9 + local.set $2 + local.get $8 if + local.get $0 local.get $2 - local.get $1 i32.const 1 i32.shl i32.add i32.const 11856 - local.get $9 + local.get $8 i32.const 1 i32.shl memory.copy - local.get $1 - local.get $9 + local.get $2 + local.get $8 i32.add - local.set $1 + local.set $2 end local.get $4 i32.const 1 @@ -27756,42 +28029,42 @@ br $for-loop|18 end end - local.get $0 - local.get $8 + local.get $1 + local.get $7 i32.add i32.load8_u - local.tee $0 + local.tee $1 i32.eqz i32.const 4 i32.add local.set $4 + local.get $0 local.get $2 - local.get $1 i32.const 1 i32.shl i32.add i32.const 11792 i32.const 11824 - local.get $0 + local.get $1 select local.get $4 i32.const 1 i32.shl memory.copy - local.get $1 + local.get $2 local.get $4 i32.add - local.tee $0 - local.get $10 + local.tee $1 + local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $1 call $~lib/string/String#substring - local.set $2 + local.set $0 br $folding-inner07 end global.get $~lib/memory/__stack_pointer @@ -27810,9 +28083,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 11888 call $~lib/string/String.__eq i32.eqz @@ -28253,12 +28526,14 @@ i32.const 11 i32.const 14256 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 + i32.const 0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -28271,7 +28546,7 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -28285,17 +28560,17 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store @@ -28311,10 +28586,10 @@ i64.const 0 i64.store block $__inlined_func$~lib/util/string/joinIntegerArray$741 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $7 i32.const 0 i32.lt_s if @@ -28323,16 +28598,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray$741 end - local.get $1 + local.get $7 i32.eqz if - local.get $4 + local.get $2 i32.load16_u call $~lib/util/number/utoa32 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -28350,7 +28625,7 @@ local.tee $8 i32.const 10 i32.add - local.get $1 + local.get $7 i32.mul i32.const 10 i32.add @@ -28359,32 +28634,32 @@ i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store offset=4 loop $for-loop|03 - local.get $1 - local.get $3 - i32.gt_s + local.get $4 + local.get $7 + i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add + local.get $2 local.get $4 - local.get $3 i32.const 1 i32.shl i32.add i32.load16_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 + local.set $1 local.get $8 if - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add @@ -28393,43 +28668,43 @@ i32.const 1 i32.shl memory.copy - local.get $0 + local.get $1 local.get $8 i32.add - local.set $0 + local.set $1 end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|03 end end - local.get $9 - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add - local.get $4 - local.get $1 + local.get $2 + local.get $7 i32.const 1 i32.shl i32.add i32.load16_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.tee $0 - i32.gt_s + local.tee $1 + local.get $9 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $1 call $~lib/string/String#substring - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -28450,9 +28725,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 14288 call $~lib/string/String.__eq i32.eqz @@ -28469,14 +28744,14 @@ i32.const 39 i32.const 14336 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 i32.const 0 - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -28489,7 +28764,7 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -28503,17 +28778,17 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store @@ -28529,10 +28804,10 @@ i64.const 0 i64.store block $__inlined_func$~lib/util/string/joinIntegerArray$742 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $7 i32.const 0 i32.lt_s if @@ -28541,16 +28816,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray$742 end - local.get $1 + local.get $7 i32.eqz if - local.get $4 + local.get $2 i32.load16_s call $~lib/util/number/itoa32 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -28568,7 +28843,7 @@ local.tee $8 i32.const 11 i32.add - local.get $1 + local.get $7 i32.mul i32.const 11 i32.add @@ -28577,32 +28852,32 @@ i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store offset=4 loop $for-loop|05 - local.get $1 - local.get $3 - i32.gt_s + local.get $4 + local.get $7 + i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add + local.get $2 local.get $4 - local.get $3 i32.const 1 i32.shl i32.add i32.load16_s call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 + local.set $1 local.get $8 if - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add @@ -28611,43 +28886,43 @@ i32.const 1 i32.shl memory.copy - local.get $0 + local.get $1 local.get $8 i32.add - local.set $0 + local.set $1 end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|05 end end - local.get $9 - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add - local.get $4 - local.get $1 + local.get $2 + local.get $7 i32.const 1 i32.shl i32.add i32.load16_s call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.tee $0 - i32.gt_s + local.tee $1 + local.get $9 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $1 call $~lib/string/String#substring - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -28668,9 +28943,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 14368 call $~lib/string/String.__eq i32.eqz @@ -28820,7 +29095,7 @@ i32.store local.get $0 i32.load offset=4 - local.set $1 + local.set $4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -28833,7 +29108,7 @@ i32.const 0 local.set $0 i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -28849,7 +29124,7 @@ local.get $2 i32.const 1 i32.sub - local.tee $4 + local.tee $7 i32.const 0 i32.lt_s if @@ -28858,18 +29133,18 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray$13 end block $folding-inner09 - local.get $4 + local.get $7 i32.eqz if block $__inlined_func$~lib/util/number/itoa64$4 (result i32) - local.get $1 + local.get $4 i64.load i64.extend32_s - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -28881,7 +29156,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $5 + local.get $3 i64.eqz if global.get $~lib/memory/__stack_pointer @@ -28892,10 +29167,10 @@ br $__inlined_func$~lib/util/number/itoa64$4 end i64.const 0 - local.get $5 + local.get $3 i64.sub - local.get $5 - local.get $5 + local.get $3 + local.get $3 i64.const 63 i64.shr_u i32.wrap_i64 @@ -28903,145 +29178,145 @@ i32.shl local.tee $0 select - local.tee $5 + local.tee $3 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.wrap_i64 - local.tee $1 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.tee $3 + local.tee $4 i32.const 1 i32.shl local.get $0 i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store local.get $0 - local.get $2 - i32.add local.get $1 - local.get $3 + i32.add + local.get $2 + local.get $4 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $5 + local.get $3 i64.const 1000000000000 i64.lt_u if (result i32) - local.get $5 + local.get $3 i64.const 100000000000 i64.ge_u i32.const 10 i32.add - local.get $5 + local.get $3 i64.const 10000000000 i64.ge_u i32.add else - local.get $5 + local.get $3 i64.const 100000000000000 i64.ge_u i32.const 13 i32.add - local.get $5 + local.get $3 i64.const 10000000000000 i64.ge_u i32.add end else - local.get $5 + local.get $3 i64.const 100000000000000000 i64.lt_u if (result i32) - local.get $5 + local.get $3 i64.const 10000000000000000 i64.ge_u i32.const 16 i32.add else - local.get $5 + local.get $3 i64.const -8446744073709551616 i64.ge_u i32.const 18 i32.add - local.get $5 + local.get $3 i64.const 1000000000000000000 i64.ge_u i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl local.get $0 i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store local.get $0 - local.get $2 - i32.add - local.get $5 local.get $1 + i32.add + local.get $3 + local.get $2 call $~lib/util/number/utoa64_dec_lut end local.get $0 if - local.get $2 + local.get $1 i32.const 45 i32.store16 end @@ -29049,9 +29324,9 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 end - local.set $2 + local.set $0 br $folding-inner09 end global.get $~lib/memory/__stack_pointer @@ -29065,7 +29340,7 @@ local.tee $8 i32.const 21 i32.add - local.get $4 + local.get $7 i32.mul i32.const 21 i32.add @@ -29077,8 +29352,8 @@ local.tee $2 i32.store offset=4 loop $for-loop|010 - local.get $3 - local.get $4 + local.get $1 + local.get $7 i32.lt_s if local.get $2 @@ -29086,8 +29361,8 @@ i32.const 1 i32.shl i32.add + local.get $4 local.get $1 - local.get $3 i32.const 3 i32.shl i32.add @@ -29113,21 +29388,20 @@ i32.add local.set $0 end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|010 end end - local.get $9 local.get $2 local.get $0 i32.const 1 i32.shl i32.add - local.get $1 local.get $4 + local.get $7 i32.const 3 i32.shl i32.add @@ -29136,7 +29410,8 @@ local.get $0 i32.add local.tee $0 - i32.gt_s + local.get $9 + i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $2 @@ -29144,13 +29419,15 @@ local.get $2 local.get $0 call $~lib/string/String#substring - local.set $2 + local.set $0 br $folding-inner09 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray$13 end global.get $~lib/memory/__stack_pointer @@ -29167,9 +29444,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 14704 call $~lib/string/String.__eq i32.eqz @@ -29297,18 +29574,18 @@ i32.store local.get $1 i32.load offset=4 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store i32.const 0 - local.set $0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -29322,7 +29599,7 @@ i32.const 20 memory.fill block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 - local.get $1 + local.get $0 i32.const 1 i32.sub local.tee $1 @@ -29334,14 +29611,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 end local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $0 i32.store @@ -29355,7 +29632,7 @@ else i32.const 11568 end - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -29363,7 +29640,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 end i32.const 11568 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11568 i32.store offset=8 @@ -29374,15 +29651,15 @@ i32.load i32.const 1 i32.shr_u - local.set $4 + local.set $7 loop $for-loop|011 - local.get $0 local.get $1 - i32.lt_s + local.get $4 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $0 + local.get $2 + local.get $4 i32.const 2 i32.shl i32.add @@ -29392,7 +29669,7 @@ local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -29404,62 +29681,62 @@ global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=12 - local.get $2 + local.get $0 local.get $8 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 11856 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|011 end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/array/Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 - local.get $2 local.get $0 + local.get $1 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end global.get $~lib/memory/__stack_pointer @@ -29476,9 +29753,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 15168 call $~lib/string/String.__eq i32.eqz @@ -29550,18 +29827,18 @@ i32.store local.get $1 i32.load offset=4 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store i32.const 0 - local.set $0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -29575,7 +29852,7 @@ i32.const 20 memory.fill block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 - local.get $1 + local.get $0 i32.const 1 i32.sub local.tee $1 @@ -29587,14 +29864,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 end local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $0 i32.store @@ -29608,7 +29885,7 @@ else i32.const 11568 end - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -29616,7 +29893,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 end i32.const 11568 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11568 i32.store offset=8 @@ -29627,15 +29904,15 @@ i32.load i32.const 1 i32.shr_u - local.set $4 + local.set $7 loop $for-loop|016 - local.get $0 local.get $1 - i32.lt_s + local.get $4 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $0 + local.get $2 + local.get $4 i32.const 2 i32.shl i32.add @@ -29645,7 +29922,7 @@ local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -29657,62 +29934,62 @@ global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=12 - local.get $2 + local.get $0 local.get $8 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 11856 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|016 end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/array/Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 - local.get $2 local.get $0 + local.get $1 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end global.get $~lib/memory/__stack_pointer @@ -29729,9 +30006,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 15168 call $~lib/string/String.__eq i32.eqz @@ -29807,18 +30084,18 @@ i32.store local.get $1 i32.load offset=4 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store i32.const 0 - local.set $0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -29832,7 +30109,7 @@ i32.const 20 memory.fill block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 - local.get $1 + local.get $0 i32.const 1 i32.sub local.tee $1 @@ -29844,14 +30121,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 end local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $0 i32.store @@ -29865,7 +30142,7 @@ else i32.const 11568 end - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -29873,7 +30150,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 end i32.const 11568 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11568 i32.store offset=8 @@ -29884,15 +30161,15 @@ i32.load i32.const 1 i32.shr_u - local.set $4 + local.set $7 loop $for-loop|017 - local.get $0 local.get $1 - i32.lt_s + local.get $4 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $0 + local.get $2 + local.get $4 i32.const 2 i32.shl i32.add @@ -29902,7 +30179,7 @@ local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -29914,62 +30191,62 @@ global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=12 - local.get $2 + local.get $0 local.get $8 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 11856 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|017 end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/array/Array<~lib/array/Array>#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 - local.get $2 local.get $0 + local.get $1 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end global.get $~lib/memory/__stack_pointer @@ -29986,9 +30263,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 13568 call $~lib/string/String.__eq i32.eqz @@ -30162,23 +30439,23 @@ i32.store local.get $1 i32.load offset=4 - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=12 - local.set $8 - i32.const 0 local.set $1 i32.const 0 + local.set $2 + i32.const 0 local.set $0 loop $for-loop|023 local.get $0 - local.get $8 + local.get $1 i32.lt_s if - local.get $3 + local.get $8 local.get $0 i32.const 2 i32.shl @@ -30191,9 +30468,9 @@ else i32.const 0 end - local.get $1 + local.get $2 i32.add - local.set $1 + local.set $2 local.get $0 i32.const 1 i32.add @@ -30202,7 +30479,7 @@ end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 2 i32.shl local.tee $0 @@ -30217,7 +30494,7 @@ local.tee $10 i32.store offset=8 local.get $10 - local.get $1 + local.get $2 i32.store offset=12 local.get $10 local.get $0 @@ -30237,11 +30514,11 @@ i32.const 0 local.set $4 loop $for-loop|124 + local.get $1 local.get $4 - local.get $8 - i32.lt_s + i32.gt_s if - local.get $3 + local.get $8 local.get $4 i32.const 2 i32.shl @@ -30276,7 +30553,7 @@ local.set $0 loop $for-loop|225 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $9 @@ -30307,7 +30584,7 @@ i32.const 34 i32.const 15792 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=420 global.get $~lib/memory/__stack_pointer local.get $10 @@ -30325,38 +30602,38 @@ unreachable end i32.const 0 - local.set $0 + local.set $4 loop $for-loop|8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - call $~lib/array/Array#get:length local.get $0 + call $~lib/array/Array#get:length + local.get $4 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $10 i32.store offset=48 local.get $10 - local.get $0 + local.get $4 call $~lib/array/Array#__get - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=48 - local.get $1 local.get $0 + local.get $4 call $~lib/array/Array#__get - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=8 + local.get $1 local.get $2 - local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -30367,10 +30644,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|8 end end @@ -30458,511 +30735,236 @@ i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $8 - i32.const 0 - local.set $4 - loop $for-loop|026 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $4 - local.get $2 - local.get $1 - i32.load offset=12 - local.tee $9 - local.get $2 - local.get $9 - i32.lt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $9 - local.get $1 - i32.load offset=4 - i32.add - i32.load - local.tee $10 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $10 - local.get $4 - local.get $1 - i32.const 15984 - i32.load - call_indirect (type $1) - local.tee $10 - i32.store offset=16 - local.get $8 - local.get $9 - i32.add - local.get $10 - i32.store - local.get $3 - local.get $10 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|026 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $0 - i32.store offset=440 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1272 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1273 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1274 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1275 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1276 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer i32.const 0 - global.set $std/array/inputStabArr + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.const 29 i32.const 0 - global.set $std/array/outputStabArr - i32.const 48960 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state + call $~lib/rt/__newArray + local.tee $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.load offset=4 + local.set $8 i32.const 0 - i32.gt_s - if - loop $while-continue|028 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|028 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state + local.set $4 + loop $for-loop|026 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $2 + local.get $1 + i32.load offset=12 + local.tee $9 + local.get $2 + local.get $9 + i32.lt_s + select + i32.lt_s if - call $~lib/rt/itcms/step - drop - br $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $9 + local.get $1 + i32.load offset=4 + i32.add + i32.load + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $10 + local.get $4 + local.get $1 + i32.const 15984 + i32.load + call_indirect (type $1) + local.tee $10 + i32.store offset=16 + local.get $8 + local.get $9 + i32.add + local.get $10 + i32.store + local.get $7 + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|026 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 444 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 - local.get $1 - i32.shl - local.tee $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $1 - local.get $3 - if - local.get $1 - local.get $3 - local.get $5 - memory.copy - end - 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 $5 - 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/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 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - 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 7712 - 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 - i32.const 1 - i32.shl - local.tee $0 - select - 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 + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $0 + i32.store offset=440 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1272 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 + call $~lib/builtins/abort + unreachable end - end - local.tee $1 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $0 - local.get $3 - i32.add - local.get $2 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - local.get $0 - 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/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 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1273 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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.eqz - if + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1274 + 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 7712 - return - 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.store + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1275 i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add + call $~lib/builtins/abort + unreachable end - else + global.get $~lib/memory/__stack_pointer 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 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1276 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/arr + i32.const 0 + global.set $std/array/inputStabArr + i32.const 0 + global.set $std/array/outputStabArr + i32.const 48960 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|028 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|028 + 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 444 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.tee $2 + i32.const 48992 + i32.const 49040 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - 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 - local.get $1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/std/arraybuffer.release.wat b/tests/compiler/std/arraybuffer.release.wat index 523e3b6aa5..5e80739f7e 100644 --- a/tests/compiler/std/arraybuffer.release.wat +++ b/tests/compiler/std/arraybuffer.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) + (type $5 (func (param i32 i32 i32) (result i32))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64))) (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,794 +43,494 @@ (data $13 (i32.const 1712) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (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 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 1073741804 + i32.ge_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$185 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34552 - i32.lt_u - i32.and - i32.eqz - if + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 i32.const 0 - i32.const 1232 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$185 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 $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 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1712 - i32.load - i32.gt_u - if - i32.const 1360 - i32.const 1424 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1716 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - return + call $~lib/rt/tlsf/initialize end - global.get $~lib/rt/itcms/white + global.get $~lib/rt/tlsf/ROOT + local.set $4 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 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1168 i32.const 1504 - i32.const 268 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 + local.get $4 + local.get $2 i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1504 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if - i32.const 0 - i32.const 1504 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 end + else + local.get $5 end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1504 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1504 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1504 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 i32.const 4 - i32.shr_u + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - i32.const 31 - i32.const 1073741820 local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 + i32.const 4 + i32.add local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.load + i32.const -3 + i32.and + i32.store end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + 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 $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const -4 + i32.and + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 + i32.add + global.set $~lib/rt/itcms/total local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 382 - i32.const 14 + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 + i32.add + local.tee $1 + i32.const 0 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.const 0 + i32.gt_s + select else - local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + 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.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + 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 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 + local.tee $2 i32.const 0 - i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add + i32.gt_s + select + local.tee $2 + i32.const 1 + call $~lib/rt/itcms/__new local.tee $3 - i32.const 2 - i32.store - local.get $0 + i32.store offset=4 local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) + (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 + global.get $~lib/rt/itcms/visitCount i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + i32.add + global.set $~lib/rt/itcms/visitCount + 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 295 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34560 - i32.const 0 - i32.store - i32.const 36128 - i32.const 0 - i32.store - loop $for-loop|0 + 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 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34560 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34560 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - 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.add - local.set $0 - br $for-loop|0 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end end - i32.const 34560 - i32.const 36132 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34560 - global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1092,51 +792,70 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 256 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 i32.lt_u if - local.get $1 + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - 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.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1147,446 +866,455 @@ if i32.const 0 i32.const 1504 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1504 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1168 - i32.const 1232 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end + local.get $0 + local.get $0 + i32.load + i32.const -2 local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 + i32.rotl + i32.and + i32.store 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 + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 i32.eqz if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 1168 + i32.const 0 i32.const 1504 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 i32.add - i32.const -16 + local.get $2 + i32.const -4 i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $3 + i32.const 2 + i32.and if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl + local.get $1 i32.const 4 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1504 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end + local.tee $2 + i32.const 16 + i32.lt_u local.get $5 - local.get $2 - i32.load - i32.const -4 + i32.const 23 + i32.lt_u i32.and - i32.gt_u + i32.eqz if i32.const 0 i32.const 1504 - i32.const 501 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 + local.get $0 local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add - i32.const 15 - i32.and + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 0 - i32.const 1504 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - local.get $6 - i32.const -4 - i32.and + local.get $0 local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$185 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34552 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$185 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $2 - local.get $5 - local.get $6 - i32.const 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 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 + local.get $1 + i32.const 1712 i32.load - i32.const -4 - i32.and + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1716 i32.add - local.tee $3 - local.get $3 i32.load - i32.const -3 + i32.const 32 i32.and - i32.store end - local.get $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 $1 - i32.load offset=8 local.set $3 local.get $2 - local.get $1 + i32.load offset=8 + local.set $1 + local.get $0 global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 + i32.eqz + i32.const 2 local.get $3 + select local.get $2 - local.get $3 - 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 $1 - i32.const 0 local.get $0 - memory.fill local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + i32.store offset=8 local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 295 - 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 - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 @@ -1622,126 +1350,395 @@ 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.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34560 + i32.const 0 + i32.store + i32.const 36128 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - unreachable end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:std/arraybuffer + i32.const 34560 + i32.const 36132 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34560 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (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 1784 - i32.lt_s + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 34576 - i32.const 34624 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $3 local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if local.get $3 + 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 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 local.get $1 - local.get $3 - i32.lt_s - select + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end 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 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return end local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 1 - call $~lib/rt/itcms/__new local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $3 - local.get $0 local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $3 + i32.const 2 + i32.store + local.get $0 local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1848,6 +1845,9 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~start + call $start:std/arraybuffer + ) (func $start:std/arraybuffer (local $0 i32) (local $1 i32) diff --git a/tests/compiler/std/console.release.wat b/tests/compiler/std/console.release.wat index a45eaf7c52..e8c683571e 100644 --- a/tests/compiler/std/console.release.wat +++ b/tests/compiler/std/console.release.wat @@ -1,18 +1,18 @@ (module (type $0 (func (param i32))) (type $1 (func (param i32 i32))) - (type $2 (func)) - (type $3 (func (param i32 i32 i32 i32))) - (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) - (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) - (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) - (import "env" "console.info" (func $~lib/bindings/dom/console.info (param i32))) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "console.warn" (func $~lib/bindings/dom/console.warn (param i32))) - (import "env" "console.error" (func $~lib/bindings/dom/console.error (param i32))) - (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) (import "env" "console.timeLog" (func $~lib/bindings/dom/console.timeLog (param i32))) (import "env" "console.timeEnd" (func $~lib/bindings/dom/console.timeEnd (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "console.info" (func $~lib/bindings/dom/console.info (param i32))) + (import "env" "console.error" (func $~lib/bindings/dom/console.error (param i32))) + (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) + (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34380)) (memory $0 1) (data $0 (i32.const 1036) "\1c") @@ -45,128 +45,7 @@ (data $13.1 (i32.const 1592) "\02\00\00\00\08\00\00\001\002\003\004") (export "memory" (memory $0)) (start $~start) - (func $~start - i32.const 0 - i32.const 1056 - call $~lib/console/console.assert - i32.const 1 - i32.const 1088 - call $~lib/console/console.assert - i32.const 1120 - call $~lib/console/console.log - 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 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - i32.const 1168 - call $~lib/bindings/dom/console.debug - 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 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store - i32.const 1216 - call $~lib/bindings/dom/console.info - 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 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1264 - i32.store - i32.const 1264 - call $~lib/bindings/dom/console.warn - 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 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1312 - i32.store - i32.const 1312 - call $~lib/bindings/dom/console.error - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1360 - call $~lib/console/console.time - i32.const 1360 - call $~lib/console/console.timeLog - i32.const 1360 - call $~lib/console/console.timeEnd - i32.const 1408 - call $~lib/console/console.timeLog - i32.const 1408 - call $~lib/console/console.timeEnd - i32.const 1456 - call $~lib/console/console.time - i32.const 1456 - call $~lib/console/console.time - i32.const 1504 - call $~lib/console/console.log - i32.const 1536 - call $~lib/console/console.log - i32.const 1568 - call $~lib/console/console.log - i32.const 1600 - call $~lib/console/console.log - return - end - i32.const 34400 - i32.const 34448 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/console/console.assert (param $0 i32) (param $1 i32) + (func $~lib/console/console.log (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -186,19 +65,16 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store local.get $0 - i32.const 0 - i32.ne - local.get $1 - call $~lib/bindings/dom/console.assert + call $~lib/bindings/dom/console.log 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) + (func $~lib/console/console.time (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -221,13 +97,13 @@ local.get $0 i32.store local.get $0 - call $~lib/bindings/dom/console.log + call $~lib/bindings/dom/console.time global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.time (param $0 i32) + (func $~lib/console/console.timeLog (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -250,13 +126,13 @@ local.get $0 i32.store local.get $0 - call $~lib/bindings/dom/console.time + call $~lib/bindings/dom/console.timeLog global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.timeLog (param $0 i32) + (func $~lib/console/console.timeEnd (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -279,13 +155,13 @@ local.get $0 i32.store local.get $0 - call $~lib/bindings/dom/console.timeLog + call $~lib/bindings/dom/console.timeEnd global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.timeEnd (param $0 i32) + (func $~lib/console/console.assert (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -305,13 +181,137 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store local.get $0 - call $~lib/bindings/dom/console.timeEnd + i32.const 0 + i32.ne + local.get $1 + call $~lib/bindings/dom/console.assert global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + i32.const 0 + i32.const 1056 + call $~lib/console/console.assert + i32.const 1 + i32.const 1088 + call $~lib/console/console.assert + i32.const 1120 + call $~lib/console/console.log + 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 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1168 + call $~lib/bindings/dom/console.debug + 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 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + i32.const 1216 + call $~lib/bindings/dom/console.info + 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 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1264 + call $~lib/bindings/dom/console.warn + 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 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.store + i32.const 1312 + call $~lib/bindings/dom/console.error + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1360 + call $~lib/console/console.time + i32.const 1360 + call $~lib/console/console.timeLog + i32.const 1360 + call $~lib/console/console.timeEnd + i32.const 1408 + call $~lib/console/console.timeLog + i32.const 1408 + call $~lib/console/console.timeEnd + i32.const 1456 + call $~lib/console/console.time + i32.const 1456 + call $~lib/console/console.time + i32.const 1504 + call $~lib/console/console.log + i32.const 1536 + call $~lib/console/console.log + i32.const 1568 + call $~lib/console/console.log + i32.const 1600 + call $~lib/console/console.log + return + end + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/std/dataview.release.wat b/tests/compiler/std/dataview.release.wat index 9b1a9be298..f02332e163 100644 --- a/tests/compiler/std/dataview.release.wat +++ b/tests/compiler/std/dataview.release.wat @@ -1,20 +1,20 @@ (module - (type $0 (func (param i32 i32 i32))) - (type $1 (func (param i32 i32 i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32 i32) (result i32))) + (type $0 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func)) (type $4 (func (param i32))) (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32) (result i64))) (type $7 (func (param i32 i64 i32))) (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64))) + (type $9 (func (param i32 i32 i32) (result f32))) (type $10 (func (result i32))) - (type $11 (func (param i32) (result i32))) - (type $12 (func (param i32 i32 i32) (result f32))) - (type $13 (func (param i32 i32) (result f64))) + (type $11 (func (param i32 i32) (result f64))) + (type $12 (func (param i32 i32 i64))) + (type $13 (func (param i32 f64 i32))) (type $14 (func (param i32 f32 i32))) - (type $15 (func (param i32 f64 i32))) + (type $15 (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)) @@ -51,796 +51,525 @@ (data $13 (i32.const 1744) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end + (func $~lib/dataview/DataView#getUint16 (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 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 2 + i32.add + i32.lt_s + i32.or if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 1360 + i32.const 1632 + i32.const 79 + i32.const 7 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$221 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34540 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$221 - end + else local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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.const 8 + i32.shl + local.get $0 + i32.const 8 + i32.shr_u i32.or - i32.store offset=4 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + ) + (func $~lib/dataview/DataView#getInt16 (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 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 i32.const 1 - else - local.get $1 - i32.const 1744 - i32.load - i32.gt_u - if - i32.const 1360 - i32.const 1424 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1748 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 i32.const 2 - local.get $3 - select - local.get $2 + i32.add + i32.lt_s i32.or - i32.store offset=4 + if + i32.const 1360 + i32.const 1632 + i32.const 58 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 + i32.store 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 - 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.add + i32.load16_s + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + else + local.get $0 + i32.const 8 + i32.shl + local.get $0 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (func $~lib/dataview/DataView#getUint32 (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 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 268 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 4 + i32.add + i32.lt_s + i32.or if - i32.const 0 - i32.const 1504 - i32.const 270 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 87 + i32.const 7 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + local.get $0 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + 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 end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/dataview/DataView#getInt32 (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 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 284 - i32.const 14 + i32.const 34560 + i32.const 34608 + 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.store local.get $1 + i32.const 31 + i32.shr_u + local.get $0 i32.load offset=8 - local.set $5 local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 + i32.const 4 + i32.add + i32.lt_s + i32.or if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 1360 + i32.const 1632 + i32.const 66 + i32.const 7 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 + i32.load offset=4 i32.add - i32.const 2 - i32.shl + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $1 - i32.load offset=96 - i32.eq + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) + local.get $0 + else + 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 + end + ) + (func $~lib/dataview/DataView#getFloat32 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 201 - i32.const 14 + i32.const 34560 + i32.const 34608 + 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.store local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 local.get $1 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + i32.lt_s + i32.or if + i32.const 1360 + i32.const 1632 + i32.const 35 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + if (result f32) + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock + i32.store local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and + local.get $0 + i32.load offset=4 i32.add - local.tee $3 + f32.load + else + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $1 - i32.const 4 + local.get $0 + i32.load offset=4 i32.add - local.get $1 i32.load - i32.const -4 + local.tee $0 + i32.const -16711936 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + f32.reinterpret_i32 end - local.get $3 - i32.const 2 - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#getUint8 (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 1772 + i32.lt_s if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 + i32.const 34560 + i32.const 34608 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $2 - i32.const 2 - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 233 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 72 + i32.const 50 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 4 + local.get $0 + i32.load offset=4 i32.add - local.get $2 + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.ne + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#getInt8 (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 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 234 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 251 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 51 + i32.const 50 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 + i32.store local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 + i32.load offset=4 i32.add - i32.const 2 - i32.shl + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#__set (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 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + 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 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 + i32.store local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 382 - i32.const 14 + i32.const 1360 + i32.const 1568 + i32.const 178 + i32.const 45 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 19 + local.get $0 + i32.load offset=4 i32.add - i32.const -16 - i32.and + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - local.set $1 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 - i32.load offset=1568 - local.tee $3 + i32.eqz if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + return end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 + global.get $~lib/rt/itcms/white + local.get $0 i32.const 20 - i32.lt_u + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - return + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34544 - i32.const 0 - i32.store - i32.const 36112 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34544 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34544 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34544 - i32.const 36116 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34544 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1100,134 +829,6 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1395,152 +996,386 @@ i64.extend_i32_s i64.const 16 i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/dataview/DataView#getUint64 (param $0 i32) (param $1 i32) (result i64) + (local $2 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 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + 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.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 159 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + if (result i64) + local.get $2 + else + local.get $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 + end + ) + (func $~lib/dataview/DataView#getInt64 (param $0 i32) (param $1 i32) (result i64) + (local $2 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 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + 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.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 151 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + if (result i64) + local.get $2 + else + local.get $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 end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + ) + (func $~lib/dataview/DataView#getFloat64 (param $0 i32) (param $1 i32) (result f64) + (local $2 i64) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 501 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 361 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 44 + i32.const 7 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or + local.get $1 + if (result f64) + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.get $0 + i32.load offset=4 + f64.load else - local.get $2 - local.get $6 - i32.const -2 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store + local.get $0 + i32.load offset=4 + i64.load + local.tee $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and local.get $2 - i32.const 4 - i32.add + 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 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + f64.reinterpret_i64 end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 + global.set $~lib/memory/__stack_pointer ) (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 @@ -1586,696 +1421,935 @@ i32.const 1 i32.eq local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:std/dataview - ) - (func $~lib/typedarray/Uint8Array#__set (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 - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 1360 - i32.const 1568 - i32.const 178 - i32.const 45 + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const -4 + i32.and + local.tee $3 i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + i32.lt_u if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 call $~lib/builtins/abort unreachable end - 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 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 local.get $3 - i32.const 0 - i32.store offset=8 - 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.get $1 - local.get $2 - i32.add + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 i32.lt_u local.get $2 - i32.const 1073741820 - i32.gt_u - i32.or + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1056 - i32.const 1632 - i32.const 25 - i32.const 7 + i32.const 0 + i32.const 1504 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $3 + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 + local.get $2 + i32.const 4 + i32.shl local.get $3 - local.get $0 - local.get $1 i32.add - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (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 1772 - i32.lt_s + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 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.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $1 i32.load - i32.sub - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/dataview/DataView#getFloat32 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - (local $3 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 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.store - local.get $1 - i32.const 31 - i32.shr_u - local.get $0 - i32.load offset=8 local.get $1 i32.const 4 i32.add - i32.lt_s - i32.or + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if - i32.const 1360 - i32.const 1632 - i32.const 35 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if (result f32) - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $0 - i32.load offset=4 + local.get $3 + i32.const 4 i32.add - f32.load - else - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 i32.store local.get $1 - local.get $0 - i32.load offset=4 + i32.const 4 i32.add + local.get $1 i32.load - local.tee $0 - i32.const -16711936 + i32.const -4 i32.and - i32.const 8 - i32.rotl + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 16711935 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 i32.and - i32.const 8 - i32.rotr - i32.or - f32.reinterpret_i32 + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/dataview/DataView#getFloat64 (param $0 i32) (param $1 i32) (result f64) - (local $2 i64) - (local $3 f64) - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - i32.load offset=8 - i32.const 8 - i32.lt_s + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 - i32.const 1360 - i32.const 1632 - i32.const 44 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - if (result f64) - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$221 local.get $0 i32.load offset=4 - f64.load - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34540 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$221 + end local.get $0 - i32.load offset=4 - i64.load + i32.load offset=8 local.tee $2 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 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 + i32.store offset=8 local.get $2 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - f64.reinterpret_i64 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/dataview/DataView#getInt8 (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 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - i32.const 1 + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 1744 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1748 + i32.add + i32.load + i32.const 32 + i32.and end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 local.get $1 local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 51 - i32.const 50 - call $~lib/builtins/abort + 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/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.load + call $~lib/rt/itcms/__visit ) - (func $~lib/dataview/DataView#getInt16 (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 - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - i32.const 31 - i32.shr_u - local.get $0 - i32.load offset=8 - local.get $1 - i32.const 2 - i32.add - i32.lt_s - i32.or + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1360 - i32.const 1632 - i32.const 58 - i32.const 7 + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 - i32.load offset=4 - i32.add - i32.load16_s - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 if (result i32) local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else local.get $0 - i32.const 8 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add i32.shl - local.get $0 - i32.const 65535 i32.and - i32.const 8 - i32.shr_u - i32.or + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end ) - (func $~lib/dataview/DataView#getInt32 (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 - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - i32.const 1 + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 34544 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36112 + i32.const 0 i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34544 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34544 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34544 + i32.const 36116 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34544 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.const 31 - i32.shr_u - local.get $0 - i32.load offset=8 - local.get $1 - i32.const 4 - i32.add - i32.lt_s - i32.or + i64.extend_i32_u + i64.lt_u if - i32.const 1360 - i32.const 1632 - i32.const 66 - i32.const 7 + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=4 + i32.const 19 i32.add - i32.load - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - if (result i32) - local.get $0 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else 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 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/dataview/DataView#getInt64 (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 i32.const 8 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 151 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - local.get $0 - i32.load offset=4 - i64.load - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $1 - if (result i64) - local.get $2 - else - local.get $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 - end - ) - (func $~lib/dataview/DataView#getUint8 (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 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - 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.store + i32.store offset=4 local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 72 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=1568 local.get $0 - i32.store local.get $1 - local.get $0 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) - (func $~lib/dataview/DataView#getUint16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#setUint64 (param $0 i32) (param $1 i64) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2297,20 +2371,14 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - i32.const 31 - i32.shr_u local.get $0 i32.load offset=8 - local.get $1 - i32.const 2 - i32.add + i32.const 8 i32.lt_s - i32.or if i32.const 1360 i32.const 1632 - i32.const 79 + i32.const 174 i32.const 7 call $~lib/builtins/abort unreachable @@ -2318,30 +2386,44 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 i32.load offset=4 - i32.add - i32.load16_u - local.set $0 + local.get $2 + if (result i64) + local.get $1 + else + local.get $1 + 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 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - if (result i32) - local.get $0 - else - local.get $0 - i32.const 8 - i32.shl - local.get $0 - 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) + (func $~lib/dataview/DataView#setUint32 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2363,20 +2445,14 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - i32.const 31 - i32.shr_u local.get $0 i32.load offset=8 - local.get $1 i32.const 4 - i32.add i32.lt_s - i32.or if i32.const 1360 i32.const 1632 - i32.const 87 + i32.const 142 i32.const 7 call $~lib/builtins/abort unreachable @@ -2384,110 +2460,31 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 i32.load offset=4 - i32.add - i32.load - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 if (result i32) - local.get $0 + local.get $1 else - local.get $0 + local.get $1 i32.const -16711936 i32.and i32.const 8 i32.rotl - local.get $0 + local.get $1 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) - (local $2 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 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - 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.store - local.get $0 - i32.load offset=8 - i32.const 8 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 159 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - local.get $0 - i32.load offset=4 - i64.load - local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - if (result i64) - local.get $2 - else - local.get $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 - end ) - (func $~lib/dataview/DataView#setFloat32 (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/dataview/DataView#setUint16 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2511,53 +2508,42 @@ i32.store local.get $0 i32.load offset=8 - i32.const 4 + i32.const 2 i32.lt_s if i32.const 1360 i32.const 1632 - i32.const 95 + i32.const 135 i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $2 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + if (result i32) local.get $1 - f32.store else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 - i32.reinterpret_f32 - local.tee $0 - i32.const -16711936 - i32.and i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 + i32.shl + local.get $1 + i32.const 65535 i32.and i32.const 8 - i32.rotr + i32.shr_u i32.or - i32.store end + i32.store16 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setFloat64 (param $0 i32) (param $1 f64) (param $2 i32) - (local $3 i64) + (func $~lib/dataview/DataView#setInt64 (param $0 i32) (param $1 i64) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2586,45 +2572,37 @@ if i32.const 1360 i32.const 1632 - i32.const 103 + i32.const 167 i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $2 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + if (result i64) local.get $1 - f64.store else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 - i64.reinterpret_f64 - local.tee $3 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $3 + local.get $1 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.tee $3 + local.tee $1 i64.const 16 i64.shr_u i64.const 281470681808895 i64.and - local.get $3 + local.get $1 i64.const 281470681808895 i64.and i64.const 16 @@ -2632,14 +2610,14 @@ i64.or i64.const 32 i64.rotr - i64.store end + i64.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setInt16 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt32 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2663,12 +2641,12 @@ i32.store local.get $0 i32.load offset=8 - i32.const 2 + i32.const 4 i32.lt_s if i32.const 1360 i32.const 1632 - i32.const 116 + i32.const 123 i32.const 7 call $~lib/builtins/abort unreachable @@ -2683,22 +2661,24 @@ local.get $1 else local.get $1 + i32.const -16711936 + i32.and i32.const 8 - i32.shl + i32.rotl local.get $1 - i32.const 65535 + i32.const 16711935 i32.and i32.const 8 - i32.shr_u + i32.rotr i32.or end - i32.store16 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setInt32 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt16 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2722,12 +2702,12 @@ i32.store local.get $0 i32.load offset=8 - i32.const 4 + i32.const 2 i32.lt_s if i32.const 1360 i32.const 1632 - i32.const 123 + i32.const 116 i32.const 7 call $~lib/builtins/abort unreachable @@ -2742,24 +2722,23 @@ local.get $1 else local.get $1 - i32.const -16711936 - i32.and i32.const 8 - i32.rotl + i32.shl local.get $1 - i32.const 16711935 + i32.const 65535 i32.and i32.const 8 - i32.rotr + i32.shr_u i32.or end - i32.store + i32.store16 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setInt64 (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/dataview/DataView#setFloat64 (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2788,37 +2767,45 @@ if i32.const 1360 i32.const 1632 - i32.const 167 + i32.const 103 i32.const 7 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $2 - if (result i64) + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + f64.store else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + i64.reinterpret_f64 + local.tee $3 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $1 + local.get $3 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.tee $1 + local.tee $3 i64.const 16 i64.shr_u i64.const 281470681808895 i64.and - local.get $1 + local.get $3 i64.const 281470681808895 i64.and i64.const 16 @@ -2826,14 +2813,14 @@ i64.or i64.const 32 i64.rotr + i64.store end - i64.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setUint16 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setFloat32 (param $0 i32) (param $1 f32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2857,44 +2844,55 @@ i32.store local.get $0 i32.load offset=8 - i32.const 2 + i32.const 4 i32.lt_s if i32.const 1360 i32.const 1632 - i32.const 135 + i32.const 95 i32.const 7 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $2 - if (result i32) + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + f32.store else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + i32.reinterpret_f32 + local.tee $0 + i32.const -16711936 + i32.and i32.const 8 - i32.shl - local.get $1 - i32.const 65535 + i32.rotl + local.get $0 + i32.const 16711935 i32.and i32.const 8 - i32.shr_u + i32.rotr i32.or + i32.store end - i32.store16 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setUint32 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2909,51 +2907,89 @@ unreachable end 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 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 4 - i32.lt_s + i32.const 20 + i32.sub + i32.load offset=16 + local.get $1 + local.get $2 + i32.add + i32.lt_u + local.get $2 + i32.const 1073741820 + i32.gt_u + i32.or if - i32.const 1360 + i32.const 1056 i32.const 1632 - i32.const 142 + i32.const 25 i32.const 7 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + local.get $3 local.get $0 - i32.load offset=4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - 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 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/dataview/DataView#setUint64 (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2976,57 +3012,21 @@ local.get $0 i32.store local.get $0 - i32.load offset=8 - i32.const 8 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 174 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=4 - local.get $2 - if (result i64) - local.get $1 - else - local.get $1 - 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 + i32.load + i32.sub global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + call $start:std/dataview + ) (func $start:std/dataview (local $0 i32) (local $1 i32) diff --git a/tests/compiler/std/date.release.wat b/tests/compiler/std/date.release.wat index 61ce7d210a..b5fe4f437c 100644 --- a/tests/compiler/std/date.release.wat +++ b/tests/compiler/std/date.release.wat @@ -6,14 +6,14 @@ (type $4 (func (param i32))) (type $5 (func (param i32 i32 i32) (result i32))) (type $6 (func (param i64) (result i32))) - (type $7 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64))) - (type $10 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) + (type $10 (func (param i32 i64))) (type $11 (func (param i32 i32 i32 i64) (result i64))) - (type $12 (func (param i32 i32 i32))) - (type $13 (func (param i32 i32 i32 i32) (result i32))) - (type $14 (func (param i32 i64))) + (type $12 (func (param i32 i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32 i64))) + (type $14 (func (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)) @@ -257,3006 +257,1261 @@ (data $117 (i32.const 8432) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\04A\00\00\02A\00\00\02\t") (export "memory" (memory $0)) (export "_start" (func $~start)) - (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 + (func $~lib/date/Date#constructor (param $0 i64) (result i32) + (local $1 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 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - i32.const 2 - i32.le_s - i32.sub - local.tee $0 - i32.const 399 i32.const 0 - local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - i32.lt_s - select - i32.sub - i32.const 400 - i32.div_s - local.set $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const -3 - i32.const 9 + i32.store offset=4 local.get $1 - 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 - local.get $2 - i32.add + i32.const 0 + i32.store offset=8 local.get $0 - local.get $3 - i32.const 400 - i32.mul - i32.sub - local.tee $0 - i32.const 365 - i32.mul + i64.const -8640000000000000 + i64.lt_s local.get $0 - i32.const 2 - i32.shr_u - i32.add + i64.const 8640000000000000 + i64.gt_s + i32.or + if + i32.const 1056 + i32.const 1104 + i32.const 131 + i32.const 35 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.const 100 - i32.div_u - i32.sub - i32.add - local.get $3 - i32.const 146097 - i32.mul + call $~lib/date/dateFromEpoch + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + global.get $~lib/date/_month + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + global.get $~lib/date/_day + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 719469 - i32.sub - i64.extend_i32_s - i64.const 86400000 - i64.mul - i64.add - i64.add - i64.add - i64.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/date/dateFromEpoch (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - local.get $0 - i64.const 86399999 - i64.const 0 - local.get $0 - i64.const 0 - i64.lt_s - select - i64.sub - i64.const 86400000 - i64.div_s - i32.wrap_i64 - i32.const 2 - i32.shl - i32.const 2877872 - i32.add - i32.const 3 - i32.or - local.tee $1 - i32.const 146096 - i32.const 0 local.get $1 - i32.const 0 - i32.lt_s - select - i32.sub - i32.const 146097 - i32.div_s - local.set $2 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $1 - local.get $2 - i32.const 146097 - i32.mul + i32.const 20 i32.sub + local.tee $1 + i32.load offset=4 i32.const 3 - i32.or - i64.extend_i32_u - i64.const 2939745 - i64.mul - local.tee $0 - i32.wrap_i64 - i32.const 11758980 - i32.div_u - local.tee $4 - i32.const 2141 - i32.mul - i32.const 197913 - i32.add - local.set $3 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.get $2 - i32.const 100 - i32.mul - i32.add - local.set $1 - local.get $3 - i32.const 16 - i32.shr_u - local.set $2 - local.get $3 - i32.const 65535 i32.and - i32.const 2141 - i32.div_u - i32.const 1 - i32.add - global.set $~lib/date/_day - local.get $4 - i32.const 306 - i32.ge_u + i32.eq if - local.get $2 - i32.const 12 + local.get $0 + i32.const 20 i32.sub - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - global.set $~lib/date/_month - local.get $1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1392 - call $~lib/rt/itcms/__visit - i32.const 6784 - call $~lib/rt/itcms/__visit - i32.const 6832 - call $~lib/rt/itcms/__visit - i32.const 1200 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - 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 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne + 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 - i32.load offset=4 + 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 + local.get $3 i32.const 3 + i32.eq i32.and - i32.const 3 - i32.ne if - i32.const 0 - i32.const 1264 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/itcms/Object#makeGray end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 end end ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (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 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + 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 - global.get $~lib/rt/itcms/iter + local.get $1 i32.eq if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - block $__inlined_func$~lib/rt/itcms/Object#unlink$376 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 + block $folding-inner0 + local.get $1 i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 41236 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$376 - end local.get $0 - i32.load offset=8 - local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.or + br_if $folding-inner0 + 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 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - i32.store offset=8 + i32.store local.get $2 local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + 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 + i32.const 0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/date/Date.fromString (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 $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 72 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 72 + memory.fill + 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 - else - local.get $1 - i32.const 8432 - i32.load - i32.gt_u + i32.shr_u + i32.eqz if - i32.const 1392 - i32.const 1456 - i32.const 21 - i32.const 28 + i32.const 1056 + i32.const 1104 + i32.const 50 + i32.const 33 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 2 - i32.shl - i32.const 8436 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 - 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 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3488 i32.const 0 - i32.const 1536 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 + call $~lib/string/String#indexOf + local.tee $2 + i32.const -1 i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.const 0 local.get $2 - i32.const 2 - i32.shl - i32.add + call $~lib/string/String#substring local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1536 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1536 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1536 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1536 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1536 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 41248 - i32.const 0 - i32.store - i32.const 42816 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 41248 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 41248 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 41248 - i32.const 42820 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 41248 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 41236 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 41236 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 41236 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1536 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1200 - i32.const 1264 - i32.const 261 - 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1200 - i32.const 1536 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1536 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1536 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/date/join (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) - (local $4 i32) - local.get $0 - local.get $1 - i32.const 2 - i32.le_s - i32.sub - local.tee $0 - i32.const 399 - i32.const 0 - local.get $0 - i32.const 0 - i32.lt_s - select - i32.sub - i32.const 400 - i32.div_s - local.set $4 - i64.const 86400000 - i64.const 0 - local.get $3 - i64.const 86400000 - i64.rem_s - local.tee $3 - i64.const 0 - i64.lt_s - select - local.get $3 - i64.add - local.get $1 - i32.const -3 - i32.const 9 - local.get $1 - 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 - local.get $2 - 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 - local.get $4 - i32.const 146097 - i32.mul - i32.add - i32.const 719469 - i32.sub - i64.extend_i32_s - i64.const 86400000 - i64.mul - i64.add - ) - (func $~lib/number/I32#toString (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 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - 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/number/itoa32$73 - 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 $2 - br $__inlined_func$~lib/util/number/itoa32$73 - 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 - i32.const 1 - i32.shl - local.tee $3 - 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.tee $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $3 - i32.add - local.set $5 - 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 $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i64.load32_u - local.get $4 - 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 $5 - 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 $5 - 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 $5 - 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 $3 - if - local.get $2 - 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 $2 - ) - (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 1264 - i32.const 295 - 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 - 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 - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (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 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $1 - local.get $3 - i32.const 4 - i32.ge_u - if (result i32) - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $1 - i64.load - local.get $2 - i64.load - i64.eq - if - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.tee $3 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $3 - local.tee $0 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - if - local.get $1 - i32.load16_u - local.tee $0 - local.get $2 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $0 - local.get $4 - i32.sub - return - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 - end - end - i32.const 0 - ) - (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/array/Array - block $~lib/array/Array<~lib/string/String> - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/date/Date - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|01 - 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|01 - end - end - br $folding-inner1 - 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 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - unreachable - end - i32.const 41264 - i32.const 41312 - 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 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/date - ) - (func $~lib/date/Date#constructor (param $0 i64) (result i32) - (local $1 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 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $0 - i64.const -8640000000000000 - i64.lt_s - local.get $0 - i64.const 8640000000000000 - i64.gt_s - i32.or - if - i32.const 1056 - i32.const 1104 - i32.const 131 - i32.const 35 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/date/dateFromEpoch - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - global.get $~lib/date/_month - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - global.get $~lib/date/_day - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/date/Date#setTime (param $0 i32) (param $1 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 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - 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 - i64.const -8640000000000000 - i64.lt_s - local.get $1 - i64.const 8640000000000000 - i64.gt_s - i32.or - if - i32.const 1056 - i32.const 1104 - i32.const 143 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/date/dateFromEpoch - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.get $~lib/date/_month - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.get $~lib/date/_day - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) - (local $1 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 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - 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.store - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - 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.store - local.get $0 - i64.load offset=16 - i64.const 3600000 - i64.rem_s - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - 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.store - local.get $0 - i64.load offset=16 - i64.const 60000 - i64.rem_s - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - 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.store - local.get $0 - i64.load offset=16 - i64.const 1000 - i64.rem_s - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $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 $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $1 - local.get $0 - call $~lib/date/Date#getUTCMilliseconds - i32.sub - i64.extend_i32_s - i64.add - call $~lib/date/Date#setTime - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 1 + i32.add + call $~lib/string/String#substring@varargs + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|0 + local.get $3 + i32.const 0 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$~lib/string/String#charCodeAt$386 + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + 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 -1 + local.set $0 + br $__inlined_func$~lib/string/String#charCodeAt$386 + end + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + block $for-break0 + local.get $0 + i32.const 90 + i32.eq + br_if $for-break0 + local.get $0 + i32.const 45 + i32.eq + local.get $0 + i32.const 43 + i32.eq + i32.or + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + i32.eq + if + i32.const 1056 + i32.const 1104 + i32.const 74 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.get $2 + i32.const 3520 + local.get $3 + i32.const 1 + i32.add + local.tee $5 + call $~lib/string/String#indexOf + local.tee $7 + i32.const -1 + i32.xor + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + local.get $7 + call $~lib/string/String#substring + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/util/string/strtol + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $7 + i32.const 1 + i32.add + call $~lib/string/String#substring@varargs + local.tee $7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/util/string/strtol + local.get $5 + i32.const 60 + i32.mul + i32.add + i32.const 60000 + i32.mul + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.const 1 + i32.add + call $~lib/string/String#substring@varargs + local.tee $5 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/util/string/strtol + i32.const 3600000 + i32.mul + end + local.tee $5 + i32.sub + local.get $5 + local.get $0 + i32.const 45 + i32.eq + select + local.set $5 + br $for-break0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + local.get $3 + call $~lib/string/String#substring + local.tee $2 + i32.store offset=8 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3520 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.tee $2 + i32.const 1 + i32.le_s + if + i32.const 1056 + i32.const 1104 + i32.const 96 + i32.const 21 + 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 $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $3 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/util/string/strtol + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $7 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/util/string/strtol + local.set $7 + local.get $2 + i32.const 3 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 3552 + i32.const 0 + call $~lib/string/String#indexOf + local.tee $0 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + local.get $0 + call $~lib/string/String#substring + local.tee $6 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/util/string/strtol + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=44 + local.get $0 + i32.const 1 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$~lib/string/String#substr$387 (result i32) + i32.const 3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $8 + local.get $0 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $8 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + end + local.get $0 + i32.sub + local.tee $8 + local.get $8 + i32.const 3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $8 + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + br $__inlined_func$~lib/string/String#substr$387 + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $10 + i32.store offset=4 + local.get $10 + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $8 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + end + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 -2 + i32.and + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store + block $__inlined_func$~lib/string/String#padEnd$388 + i32.const 1868 + i32.load + i32.const -2 + i32.and + local.tee $8 + i32.eqz + local.get $10 + i32.const 6 + i32.gt_u + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#padEnd$388 + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $10 + memory.copy + i32.const 6 + local.get $10 + i32.sub + local.tee $0 + local.get $8 + i32.gt_u + if + local.get $0 + local.get $0 + i32.const 2 + i32.sub + local.get $8 + i32.div_u + local.get $8 + i32.mul + local.tee $0 + i32.sub + local.set $11 + local.get $2 + local.get $10 + i32.add + local.set $12 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.gt_u + if + local.get $4 + local.get $12 + i32.add + i32.const 1872 + local.get $8 + memory.copy + local.get $4 + local.get $8 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $2 + local.get $10 + i32.add + local.get $0 + i32.add + i32.const 1872 + local.get $11 + memory.copy + else + local.get $2 + local.get $10 + i32.add + i32.const 1872 + local.get $0 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.set $0 + end + local.get $0 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/util/string/strtol + local.set $4 + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/strtol + local.set $6 + end + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1616 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtol i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.tee $8 + i32.const 2 + i32.ge_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtol + local.set $1 + local.get $8 + i32.const 3 + i32.ge_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/util/string/strtol + else + i32.const 1 + end + else + i32.const 1 + end + local.set $0 + local.get $1 + local.get $0 + local.get $3 + local.get $7 + local.get $6 + local.get $4 + call $~lib/date/epochMillis + local.get $5 + i64.extend_i32_s + i64.sub + call $~lib/date/Date#constructor + global.get $~lib/memory/__stack_pointer + i32.const 72 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (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 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + i32.const 1200 + i32.const 1264 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.eq + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - i64.load offset=16 - call $~lib/date/join - call $~lib/date/Date#setTime - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#setUTCMonth@varargs (param $0 i32) (param $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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - 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 - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 + i32.const 1536 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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 $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $2 + else + local.get $5 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - local.tee $1 - local.get $0 - i32.load offset=4 i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $3 - local.get $1 - local.get $2 - local.get $0 - i64.load offset=16 - call $~lib/date/join - call $~lib/date/Date#setTime + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 499 + i32.const 16 + 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1536 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - i32.eq + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and if - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 0 + i32.const 1536 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + local.get $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 $1 i32.load offset=8 local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 local.get $2 local.get $3 - local.get $0 - i64.load offset=16 - call $~lib/date/join - call $~lib/date/Date#setTime - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 - global.set $~lib/memory/__stack_pointer + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/date/stringify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3409,224 +1664,374 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/date/Date#toISOString (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 16 - i32.sub + i32.const -64 + i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3456 - return - end - local.get $4 - i32.eqz - if + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 64 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 3456 - local.get $0 - select - return - end - loop $for-loop|0 + i32.load + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $3 local.get $1 - local.get $3 - i32.gt_s + i32.const 10000 + i32.ge_s + i32.or if global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1616 + i32.const 1648 local.get $3 - i32.const 2 - i32.shl + select + local.tee $3 + i32.store + local.get $1 + i32.const 31 + i32.shr_s + local.tee $4 + local.get $1 + local.get $4 i32.add - i32.load - local.tee $5 + i32.xor + i32.const 6 + call $~lib/date/stringify + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=4 - local.get $5 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $2 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $2 - 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 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 3456 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3452 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - local.get $4 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $4 - i32.lt_s - if + i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 + local.get $4 i32.store offset=4 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $5 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + block $__inlined_func$~lib/string/String#concat$385 + local.get $4 i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u + i32.const -2 + i32.and local.tee $6 - i32.const 1 - i32.shl - memory.copy - local.get $3 - local.get $6 - i32.add - local.set $3 - end - local.get $1 - if local.get $5 - local.get $3 - i32.const 1 - i32.shl i32.add - i32.const 3456 + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + local.set $1 + br $__inlined_func$~lib/string/String#concat$385 + end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.shl - memory.copy + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 local.get $1 local.get $3 + local.get $5 + memory.copy + local.get $1 + local.get $5 i32.add - local.set $3 + local.get $4 + local.get $6 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $2 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer + else + local.get $1 + i32.const 4 + call $~lib/date/stringify + local.set $1 end + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.const 2 + call $~lib/date/stringify + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $5 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $6 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 3 + call $~lib/date/stringify + local.tee $0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 3616 + local.get $1 + i32.store + i32.const 3616 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 3624 + local.get $2 + i32.store + i32.const 3616 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 3632 + local.get $3 + i32.store + i32.const 3616 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 3640 + local.get $4 + i32.store + i32.const 3616 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 3648 + local.get $5 + i32.store + i32.const 3616 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 3656 + local.get $6 + i32.store + i32.const 3616 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3664 + local.get $0 + i32.store + i32.const 3616 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + i32.const 3616 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const -64 + i32.sub + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 + 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 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $5 - local.get $3 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount i32.const 1 - i32.shl i32.add - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy + global.set $~lib/rt/itcms/visitCount end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3647,368 +2052,484 @@ i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + local.get $1 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $1 + i32.load offset=8 + i32.eq + if + 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 3456 + local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $2 + local.get $3 local.get $1 - call $~lib/util/string/joinStringArray + local.get $0 + i64.load offset=16 + call $~lib/date/join + call $~lib/date/Date#setTime global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/date/Date#toISOString (param $0 i32) (result i32) + (func $~lib/util/string/strtol (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 -64 - i32.add + i32.const 4 + i32.sub global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + 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.store block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 64 - memory.fill - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.tee $1 - i32.const 0 - i32.lt_s - local.tee $3 - local.get $1 - i32.const 10000 - i32.ge_s - i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.const 1648 - local.get $3 - select - local.tee $3 - i32.store - local.get $1 - i32.const 31 - i32.shr_s - local.tee $4 - local.get $1 - local.get $4 - i32.add - i32.xor - i32.const 6 - call $~lib/date/stringify - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - 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 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - 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 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - block $__inlined_func$~lib/string/String#concat$385 - local.get $4 - i32.const 20 + i32.eqz + br_if $folding-inner0 + local.get $0 + local.tee $2 + i32.load16_u + local.set $0 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$164 (result i32) + local.get $0 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $0 + i32.const 9 i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $6 - local.get $5 - i32.add - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3456 - local.set $1 - br $__inlined_func$~lib/string/String#concat$385 + 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$164 + 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$164 + drop + block $break|0 + block $case0|0 + local.get $0 + i32.const 5760 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8232 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8233 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8239 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8287 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 12288 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 65279 + i32.eq + br_if $case0|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$164 end - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 + end + if + local.get $2 i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $3 - local.get $5 - memory.copy - local.get $1 - local.get $5 - i32.add - local.get $4 - local.get $6 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $2 + i32.load16_u + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - else - local.get $1 - i32.const 4 - call $~lib/date/stringify - local.set $1 end - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.const 2 - call $~lib/date/stringify - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - i32.const 2 - call $~lib/date/stringify - local.tee $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 2 - call $~lib/date/stringify - local.tee $4 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 2 - call $~lib/date/stringify - local.tee $5 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 1 + local.set $4 local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 2 - call $~lib/date/stringify + i32.const 45 + i32.eq local.tee $6 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMilliseconds - i32.const 3 - call $~lib/date/stringify - local.tee $0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=44 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 3616 - local.get $1 - i32.store - i32.const 3616 + i32.const 43 + i32.eq + i32.or + if (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.eqz + br_if $folding-inner0 + i32.const -1 + i32.const 1 + local.get $6 + select + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + else + local.get $0 + end + i32.const 48 + i32.eq local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 3624 - local.get $2 - i32.store - i32.const 3616 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - i32.const 3632 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $2 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $0 + i32.const 98 + i32.ne + if + local.get $0 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $0 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 2 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 8 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 16 + local.set $3 + end + end local.get $3 - i32.store - i32.const 3616 + i32.const 10 local.get $3 + select + local.set $6 + local.get $1 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store + i32.sub + local.set $7 + loop $while-continue|2 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + if + block $while-break|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 + i32.sub + local.tee $0 + i32.const 10 + i32.ge_u + if + local.get $3 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $3 + i32.const 55 + i32.sub + else + local.get $3 + i32.const 87 + i32.sub + local.get $3 + local.get $3 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $0 + end + local.get $0 + local.get $6 + i32.ge_u + if + local.get $1 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $6 + i32.mul + local.get $0 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 + end + end + end global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 - i32.store offset=4 - i32.const 3640 - local.get $4 - i32.store - i32.const 3616 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - i32.const 3648 - local.get $5 - i32.store - i32.const 3616 local.get $5 + i32.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/date/Date#getUTCSeconds (param $0 i32) (result i32) + (local $1 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 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - i32.const 3656 - local.get $6 - i32.store - i32.const 3616 - local.get $6 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 3664 - local.get $0 - i32.store - i32.const 3616 - local.get $0 + 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.store + local.get $0 + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $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#getUTCMinutes (param $0 i32) (result i32) + (local $1 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 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + 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.store + local.get $0 + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $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#getUTCMilliseconds (param $0 i32) (result i32) + (local $1 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 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - i32.const 3616 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - global.get $~lib/memory/__stack_pointer - i32.const -64 - i32.sub - global.set $~lib/memory/__stack_pointer - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i64.const 1000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) + (local $2 i64) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4027,79 +2548,36 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $2 local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - 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 - i32.const 0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.sub + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/date/Date#toDateString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) + (local $1 i64) global.get $~lib/memory/__stack_pointer - i32.const 52 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4115,245 +2593,207 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 52 - memory.fill + i32.store global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $2 - i32.const 4640 - i32.const 28 - memory.copy - local.get $2 + local.get $0 i32.store + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 48 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.const 5072 - i32.const 48 - memory.copy + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $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#setUTCMonth@varargs (param $0 i32) (param $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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + 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 + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $2 + end + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + local.tee $1 + local.get $0 + i32.load offset=4 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $2 + local.get $0 + i64.load offset=16 + call $~lib/date/join + call $~lib/date/Date#setTime + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 3600000 + i32.mul + i64.extend_i32_s local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.const 3 - i32.lt_s - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s - local.set $6 local.get $1 - i32.const 1579 - i32.add - i32.load8_u - local.get $5 - i32.const 3 - i32.const 0 - local.get $6 - select - i32.sub - i32.const 4 - i32.div_s - local.get $5 - i32.const 99 - i32.const 0 - local.get $6 - select - i32.sub - i32.const 100 - i32.div_s + i32.const 2 + i32.le_s i32.sub - local.get $5 + local.tee $0 i32.const 399 i32.const 0 - local.get $6 + local.get $0 + i32.const 0 + i32.lt_s select i32.sub i32.const 400 i32.div_s - i32.add - local.get $5 - i32.add - i32.add - local.get $4 - i32.add - i32.const 7 - i32.rem_s - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 31 - i32.shr_s - local.tee $6 - local.get $0 - i32.add - local.get $6 - i32.xor - i32.const 4 - call $~lib/date/stringify - local.tee $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 + local.set $3 + local.get $1 + i32.const -3 + i32.const 9 local.get $1 - i32.const 1 - i32.sub i32.const 2 - i32.shl - i32.add - i32.load - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 7 - i32.const 0 - local.get $5 - i32.const 0 - i32.lt_s + i32.gt_s select - local.get $5 i32.add + i32.const 153 + i32.mul i32.const 2 - i32.shl i32.add - i32.load - local.tee $2 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - call $~lib/date/stringify - local.tee $3 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.div_u local.get $2 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - i32.const 5200 - i32.const 5232 + i32.add local.get $0 - i32.const 0 - i32.lt_s - select - local.tee $0 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=44 - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=48 - i32.const 5152 - local.get $2 - i32.store - i32.const 5152 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=48 - i32.const 5156 - local.get $1 - i32.store - i32.const 5152 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=48 - i32.const 5160 - local.get $3 - i32.store - i32.const 5152 local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=48 - i32.const 5164 + i32.const 400 + i32.mul + i32.sub + local.tee $0 + i32.const 365 + i32.mul local.get $0 - i32.store - i32.const 5152 + i32.const 2 + i32.shr_u + i32.add local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=48 - i32.const 5168 - local.get $6 - i32.store - i32.const 5152 - local.get $6 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - i32.const 5152 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - global.get $~lib/memory/__stack_pointer - i32.const 52 + i32.const 100 + i32.div_u + i32.sub i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.const 146097 + i32.mul + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + i64.add + i64.add + i64.add ) - (func $~lib/date/Date#toTimeString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4369,106 +2809,55 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 32 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 2 - call $~lib/date/stringify - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 2 - call $~lib/date/stringify - local.tee $2 - i32.store offset=8 + local.get $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + if + i32.const 1056 + i32.const 1104 + i32.const 143 + i32.const 28 + 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 $0 - call $~lib/date/Date#getUTCSeconds - i32.const 2 - call $~lib/date/stringify - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 + i64.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 5456 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=28 - i32.const 5456 - local.get $1 i32.store - i32.const 5456 + local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5456 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=28 - i32.const 5464 - local.get $2 - i32.store - i32.const 5456 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5456 + call $~lib/date/dateFromEpoch i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=28 - i32.const 5472 - local.get $0 i32.store - i32.const 5456 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link + global.get $~lib/date/_month + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5456 + local.get $0 i32.store - i32.const 5456 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.get $0 + global.get $~lib/date/_day + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/date/Date#toUTCString (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/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 76 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4483,316 +2872,281 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 76 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $2 - i32.const 5824 - i32.const 28 - memory.copy - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 48 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.const 6256 - i32.const 48 - memory.copy - local.get $3 - i32.store offset=4 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store + local.get $1 local.get $0 - i32.load offset=4 - local.set $1 + i32.load offset=12 + i32.ge_u + if + i32.const 1392 + i32.const 6736 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - i32.load - local.tee $5 - local.get $1 - i32.const 3 - i32.lt_s - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - local.set $7 + i32.load offset=4 local.get $1 - i32.const 1579 - i32.add - i32.load8_u - local.get $6 - i32.const 3 - i32.const 0 - local.get $7 - select - i32.sub - i32.const 4 - i32.div_s - local.get $6 - i32.const 99 - i32.const 0 - local.get $7 - select - i32.sub - i32.const 100 - i32.div_s - i32.sub - local.get $6 - i32.const 399 - i32.const 0 - local.get $7 - select - i32.sub - i32.const 400 - i32.div_s - i32.add - local.get $6 - i32.add - i32.add - local.get $4 + i32.const 2 + i32.shl i32.add - i32.const 7 - i32.rem_s - local.set $6 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 6832 + i32.const 6736 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 31 - i32.shr_s - local.tee $7 - local.get $5 + i32.const 8 i32.add - local.get $7 - i32.xor - i32.const 4 - call $~lib/date/stringify - local.tee $7 - i32.store offset=12 + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String#substring (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 + i32.store local.get $1 - i32.const 1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $0 + i32.const 20 i32.sub - i32.const 2 - i32.shl - i32.add - i32.load + i32.load offset=16 + i32.const 1 + i32.shr_u local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 local.get $2 - i32.const 7 i32.const 0 - local.get $6 + local.get $2 i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + local.get $2 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $4 + local.get $3 + local.get $2 + local.get $2 + local.get $3 i32.lt_s select - local.get $6 - i32.add - i32.const 2 + i32.const 1 i32.shl - i32.add - i32.load local.tee $2 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 2 - call $~lib/date/stringify + i32.sub local.tee $3 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 2 - call $~lib/date/stringify - local.tee $4 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + return + end + local.get $4 + i32.eqz + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMinutes + local.get $3 i32.const 2 - call $~lib/date/stringify - local.tee $6 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 2 - call $~lib/date/stringify - local.tee $0 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer + local.get $4 + i32.add local.get $3 - i32.store offset=44 + memory.copy global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.const 3456 - local.get $5 - i32.const 0 - i32.lt_s - select - local.tee $5 - i32.store offset=52 + ) + (func $~lib/rt/__newArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=56 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=60 + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=64 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=68 - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=72 - i32.const 6368 - local.get $2 + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 i32.store - i32.const 6368 + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=72 - i32.const 6372 - local.get $3 i32.store - i32.const 6368 - local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=72 - i32.const 6376 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link local.get $1 - i32.store - i32.const 6368 + local.get $2 + i32.store offset=4 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=72 - i32.const 6380 - local.get $5 - i32.store - i32.const 6368 - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 + local.get $3 i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=72 - i32.const 6384 - local.get $7 - i32.store - i32.const 6368 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=72 - i32.const 6392 - local.get $4 - i32.store - i32.const 6368 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=72 - i32.const 6400 - local.get $6 + local.get $0 i32.store - i32.const 6368 - local.get $6 + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $2 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=72 - i32.const 6408 + i32.store local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 i32.store - i32.const 6368 local.get $0 + local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - i32.const 6368 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 76 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -4910,9 +3264,194 @@ global.set $~lib/memory/__stack_pointer i32.const -1 ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) + (local $1 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 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 3456 + i32.store + local.get $0 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCFullYear (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 @@ -4935,98 +3474,46 @@ local.get $0 i32.store local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - local.get $3 - i32.gt_s - select - local.tee $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $4 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - local.get $4 - i32.sub - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3456 - return - end - local.get $4 - i32.eqz - local.get $2 - local.get $1 - i32.const 1 - i32.shl + i32.load i32.eq - i32.and if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - local.get $4 - i32.add + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 local.get $3 - memory.copy + local.get $0 + i64.load offset=16 + call $~lib/date/join + call $~lib/date/Date#setTime global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) (func $~lib/string/String#substring@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -5061,860 +3548,2070 @@ i32.const 2147483647 local.set $2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#substring - 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 + local.get $1 + local.get $2 + call $~lib/string/String#substring + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/util/string/strtol (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $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 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s + local.get $1 + i32.eqz if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1536 + i32.const 201 + i32.const 14 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.store - block $folding-inner0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - i32.eqz - br_if $folding-inner0 - local.get $0 - local.tee $2 - i32.load16_u - local.set $0 - loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$164 (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$164 - 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$164 - drop - block $break|0 - block $case0|0 - local.get $0 - i32.const 5760 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 8232 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 8233 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 8239 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 8287 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 12288 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 65279 - i32.eq - br_if $case0|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$164 - end - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.add - local.tee $2 - i32.load16_u - local.set $0 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|0 - end - end - i32.const 1 - local.set $4 - local.get $0 - i32.const 45 - i32.eq - local.tee $6 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 - i32.const 43 - i32.eq - i32.or - if (result i32) - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - br_if $folding-inner0 - i32.const -1 - i32.const 1 - local.get $6 - select - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.tee $2 - i32.load16_u - else - local.get $0 - end - i32.const 48 - i32.eq + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.const 2 - i32.gt_s - i32.and - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $2 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $0 - i32.const 98 - i32.ne - if - local.get $0 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $0 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.sub - local.set $1 - i32.const 2 - local.set $3 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.sub - local.set $1 - i32.const 8 - local.set $3 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.sub - local.set $1 - i32.const 16 - local.set $3 - end - end local.get $3 - i32.const 10 - local.get $3 - select - local.set $6 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.const 1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 i32.sub - local.set $7 - loop $while-continue|2 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $0 - if - block $while-break|2 - local.get $2 - i32.load16_u - local.tee $3 - i32.const 48 - i32.sub - local.tee $0 - i32.const 10 - i32.ge_u - if - local.get $3 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - if (result i32) - local.get $3 - i32.const 55 - i32.sub - else - local.get $3 - i32.const 87 - i32.sub - local.get $3 - local.get $3 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - end - local.set $0 - end - local.get $0 - local.get $6 - i32.ge_u - if - local.get $1 - local.get $7 - i32.eq - br_if $folding-inner0 - br $while-break|2 - end - local.get $5 - local.get $6 - i32.mul - local.get $0 - i32.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|2 - end - end + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.mul - return + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1536 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store - local.get $1 local.get $0 - i32.load offset=8 - local.tee $2 + local.get $5 i32.const 2 - i32.shr_u - i32.gt_u + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 $1 - i32.const 268435455 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if - i32.const 6784 - i32.const 6736 - i32.const 19 - i32.const 48 + i32.const 0 + i32.const 1264 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$376 local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$363 - i32.const 1073741820 - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $3 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if local.get $0 - i32.load - local.tee $2 - i32.const 20 - i32.sub - local.tee $4 - i32.load - i32.const -4 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 41236 + i32.lt_u i32.and - i32.const 16 - i32.sub - i32.le_u + i32.eqz if - local.get $4 - local.get $3 - i32.store offset=16 - local.get $2 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$363 + i32.const 0 + i32.const 1264 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end - local.get $3 - local.get $4 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $2 - local.get $3 - local.get $4 - i32.load offset=16 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_u - select - memory.copy + br $__inlined_func$~lib/rt/itcms/Object#unlink$376 end - local.get $1 - local.get $2 - i32.ne + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz 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 + i32.const 1264 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $3 + 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 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $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 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - 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.store - local.get $0 + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 8432 + i32.load + i32.gt_u + if + i32.const 1392 + i32.const 1456 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 8436 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.store offset=8 + local.get $1 local.get $0 - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + 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/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__visit_members (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) - global.get $~lib/memory/__stack_pointer - i32.const 36 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner4 - block $folding-inner3 - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 36 - memory.fill - local.get $2 - i32.eqz - br_if $folding-inner1 - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/rt/__newArray - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=12 - i32.eqz - if - local.get $2 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 1 - i32.store offset=12 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/date/Date + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 local.get $0 - i32.store - local.get $2 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 + i32.sub + i32.load offset=16 i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner4 - end - 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 - i32.const 1 - i32.shr_u - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 2147483647 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $8 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - if - local.get $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - i32.const 3456 - i32.store - br $folding-inner4 - end - else - local.get $6 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $6 - local.get $8 - local.get $6 - local.get $8 - i32.lt_s - select - local.tee $3 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $4 - i32.const 0 local.set $1 - loop $for-loop|0 + loop $while-continue|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.lt_u if - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=12 - local.get $5 local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $2 - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 1 + 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 $1 - br $for-loop|0 + local.set $0 + br $while-continue|0 end end - br $folding-inner4 + return 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 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=20 - loop $while-continue|1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=24 - local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|01 local.get $1 - local.get $3 - call $~lib/string/String#indexOf - local.tee $9 - i32.const -1 - i32.xor + local.get $2 + i32.lt_u if - local.get $9 - local.get $3 - i32.sub - local.tee $7 - i32.const 0 - i32.gt_s + local.get $1 + i32.load + local.tee $3 if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 1 - i32.shl - local.tee $10 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=28 - local.get $7 - local.get $0 local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $10 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=24 - local.get $2 - local.get $7 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3456 - call $~lib/array/Array<~lib/string/String>#push + call $~lib/rt/itcms/__visit end - local.get $5 - i32.const 1 - i32.add - local.tee $5 - local.get $8 - i32.eq - br_if $folding-inner3 - local.get $4 - local.get $9 + local.get $1 + i32.const 4 i32.add - local.set $3 - br $while-continue|1 + local.set $1 + br $while-continue|01 end end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=24 - local.get $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - br $folding-inner3 - end - local.get $6 - local.get $3 - i32.sub - local.tee $1 + br $folding-inner1 + 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 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + unreachable + end + i32.const 41264 + i32.const 41312 + 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 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/join (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) + (local $4 i32) + local.get $0 + local.get $1 + i32.const 2 + i32.le_s + i32.sub + local.tee $0 + i32.const 399 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.sub + i32.const 400 + i32.div_s + local.set $4 + i64.const 86400000 + i64.const 0 + local.get $3 + i64.const 86400000 + i64.rem_s + local.tee $3 + i64.const 0 + i64.lt_s + select + local.get $3 + i64.add + local.get $1 + i32.const -3 + i32.const 9 + local.get $1 + 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 + local.get $2 + 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 + local.get $4 + i32.const 146097 + i32.mul + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + ) + (func $~lib/date/Date#toUTCString (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 76 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 76 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 5824 + i32.const 28 + memory.copy + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 6256 + i32.const 48 + memory.copy + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + i32.load + local.tee $5 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $6 + i32.const 3 + i32.const 0 + local.get $6 + i32.const 0 + i32.lt_s + local.tee $7 + select + i32.sub + i32.const 4 + i32.div_s + local.get $6 + i32.const 99 + i32.const 0 + local.get $7 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $6 + i32.const 399 + i32.const 0 + local.get $7 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $6 + i32.add + i32.add + local.get $4 + i32.add + i32.const 7 + i32.rem_s + local.tee $6 + i32.const 0 + i32.lt_s + select + local.get $6 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 31 + i32.shr_s + local.tee $7 + local.get $5 + local.get $7 + i32.add + i32.xor + i32.const 4 + call $~lib/date/stringify + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $4 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $6 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.const 3456 + local.get $5 + i32.const 0 + i32.lt_s + select + local.tee $5 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=72 + i32.const 6368 + local.get $1 + i32.store + i32.const 6368 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=72 + i32.const 6372 + local.get $3 + i32.store + i32.const 6368 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=72 + i32.const 6376 + local.get $2 + i32.store + i32.const 6368 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=72 + i32.const 6380 + local.get $5 + i32.store + i32.const 6368 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=72 + i32.const 6384 + local.get $7 + i32.store + i32.const 6368 + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=72 + i32.const 6392 + local.get $4 + i32.store + i32.const 6368 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=72 + i32.const 6400 + local.get $6 + i32.store + i32.const 6368 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=72 + i32.const 6408 + local.get $0 + i32.store + i32.const 6368 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + i32.const 6368 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#toDateString (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 52 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 52 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 4640 + i32.const 28 + memory.copy + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 5072 + i32.const 48 + memory.copy + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $1 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + i32.load + local.tee $0 + local.get $1 + i32.const 3 + i32.lt_s + i32.sub + local.tee $5 + i32.const 3 + i32.const 0 + local.get $5 + i32.const 0 + i32.lt_s + local.tee $6 + select + i32.sub + i32.const 4 + i32.div_s + local.get $5 + i32.const 99 + i32.const 0 + local.get $6 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $5 + i32.const 399 + i32.const 0 + local.get $6 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $5 + i32.add + i32.add + local.get $4 + i32.add + i32.const 7 + i32.rem_s + local.tee $5 + i32.const 0 + i32.lt_s + select + local.get $5 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 31 + i32.shr_s + local.tee $6 + local.get $0 + local.get $6 + i32.add + i32.xor + i32.const 4 + call $~lib/date/stringify + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.const 5232 + local.get $0 + i32.const 0 + i32.lt_s + select + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + i32.const 5152 + local.get $2 + i32.store + i32.const 5152 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + i32.const 5156 + local.get $1 + i32.store + i32.const 5152 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=48 + i32.const 5160 + local.get $3 + i32.store + i32.const 5152 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + i32.const 5164 + local.get $0 + i32.store + i32.const 5152 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=48 + i32.const 5168 + local.get $6 + i32.store + i32.const 5152 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + i32.const 5152 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 52 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $1 + local.get $3 + i32.const 4 + i32.ge_u + if (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $1 + i64.load + local.get $2 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $3 + local.tee $0 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + if + local.get $1 + i32.load16_u + local.tee $0 + local.get $2 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $0 + local.get $4 + i32.sub + return + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String#split@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 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#split + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 41248 + i32.const 0 + i32.store + i32.const 42816 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 41248 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 41248 + i32.add i32.const 0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=32 - local.get $4 - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=24 - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3456 - call $~lib/array/Array<~lib/string/String>#push - end - br $folding-inner4 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 41248 + i32.const 42820 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 41248 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1392 + call $~lib/rt/itcms/__visit + i32.const 6784 + call $~lib/rt/itcms/__visit + i32.const 6832 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + 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 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end - i32.const 0 - call $~lib/rt/__newArray - local.set $2 - br $folding-inner4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 36 - i32.add - global.set $~lib/memory/__stack_pointer + end + ) + (func $~lib/date/dateFromEpoch (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i64.const 86399999 + i64.const 0 + local.get $0 + i64.const 0 + i64.lt_s + select + i64.sub + i64.const 86400000 + i64.div_s + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2877872 + i32.add + i32.const 3 + i32.or + local.tee $1 + i32.const 146096 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.sub + i32.const 146097 + i32.div_s + local.set $2 + local.get $1 + local.get $2 + i32.const 146097 + i32.mul + i32.sub + i32.const 3 + i32.or + i64.extend_i32_u + i64.const 2939745 + i64.mul + local.tee $0 + i32.wrap_i64 + i32.const 11758980 + i32.div_u + local.tee $4 + i32.const 2141 + i32.mul + i32.const 197913 + i32.add + local.set $3 + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.get $2 + i32.const 100 + i32.mul + i32.add + local.set $1 + local.get $3 + i32.const 16 + i32.shr_u + local.set $2 + local.get $3 + i32.const 65535 + i32.and + i32.const 2141 + i32.div_u + i32.const 1 + i32.add + global.set $~lib/date/_day + local.get $4 + i32.const 306 + i32.ge_u + if local.get $2 - return + i32.const 12 + i32.sub + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $2 + global.set $~lib/date/_month + local.get $1 + ) + (func $~lib/date/Date#toTimeString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + i32.const 5456 + local.get $1 + i32.store + i32.const 5456 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + i32.const 5464 + local.get $2 + i32.store + i32.const 5456 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + i32.const 5472 + local.get $0 + i32.store + i32.const 5456 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + i32.const 5456 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 32 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/string/String#split@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/ensureCapacity (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.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5929,41 +5626,164 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 6784 + i32.const 6736 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$363 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$363 end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + 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 - local.set $1 + call $~lib/rt/itcms/__link end - i32.const 2147483647 - local.set $2 + local.get $0 + local.get $3 + i32.store offset=8 end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#get:length (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 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + 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 $1 - i32.store offset=4 local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#split + i32.store + local.get $0 + i32.load offset=12 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/date + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5978,59 +5798,169 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + return + end + local.get $4 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 3456 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + i32.store offset=4 + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $2 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $2 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end i32.const 0 - i32.store + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 + i32.const 3456 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.const 3452 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + local.get $4 + i32.mul i32.add - global.set $~lib/memory/__stack_pointer - ) - (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.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1392 - i32.const 6736 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $4 + 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 $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + i32.const 1 + i32.shl + memory.copy + local.get $3 + local.get $6 + i32.add + local.set $3 + end + local.get $1 + if + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3456 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $3 + i32.add + local.set $3 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 + local.get $4 i32.const 2 i32.shl i32.add @@ -6038,729 +5968,855 @@ local.tee $0 i32.store offset=4 local.get $0 - i32.eqz if - i32.const 6832 - i32.const 6736 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/date/Date.fromString (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 $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 72 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 72 - memory.fill global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u - i32.eqz - if - i32.const 1056 - i32.const 1104 - i32.const 50 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3488 - i32.const 0 - call $~lib/string/String#indexOf - local.tee $2 - i32.const -1 - i32.xor - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - local.get $2 - call $~lib/string/String#substring - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 1 - i32.add - call $~lib/string/String#substring@varargs - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/string/String#split (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) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner4 + block $folding-inner3 + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 8468 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 36 + memory.fill local.get $2 - i32.store - block $__inlined_func$~lib/string/String#charCodeAt$386 - local.get $3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 + i32.eqz + br_if $folding-inner1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer i32.const 1 - i32.shr_u - i32.ge_u + call $~lib/rt/__newArray + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + i32.eqz if + local.get $2 + i32.const 1 + call $~lib/array/ensureCapacity 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/string/String#charCodeAt$386 + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.store offset=12 end + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 + i32.store + local.get $2 + i32.load offset=4 + local.get $0 + i32.store + local.get $2 + local.get $0 i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + br $folding-inner4 end - block $for-break0 - local.get $0 - i32.const 90 - i32.eq - br_if $for-break0 - local.get $0 - i32.const 45 - i32.eq - local.get $0 - i32.const 43 - i32.eq - i32.or + 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 + i32.const 1 + i32.shr_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $8 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + if + local.get $6 + i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u i32.const 1 - i32.sub - i32.eq - if - i32.const 1056 - i32.const 1104 - i32.const 74 - i32.const 13 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store - i32.const 0 + i32.store offset=4 local.get $2 - i32.const 3520 + i32.load offset=4 + i32.const 3456 + i32.store + br $folding-inner4 + end + else + local.get $6 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $8 + local.get $6 + local.get $8 + i32.lt_s + select + local.tee $3 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 local.get $3 - i32.const 1 - i32.add - local.tee $5 - call $~lib/string/String#indexOf - local.tee $7 - i32.const -1 - i32.xor - if (result i32) + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + local.get $5 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 i32.store + local.get $2 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=20 + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $0 + local.get $1 + local.get $3 + call $~lib/string/String#indexOf + local.tee $9 + i32.const -1 + i32.xor + if + local.get $9 + local.get $3 + i32.sub + local.tee $7 + i32.const 0 + i32.gt_s + if global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $5 local.get $7 - call $~lib/string/String#substring - local.tee $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/util/string/strtol - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 + i32.shl + local.tee $10 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=28 local.get $7 + local.get $0 + local.get $3 i32.const 1 + i32.shl i32.add - call $~lib/string/String#substring@varargs - local.tee $7 - i32.store offset=16 + local.get $10 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $7 - i32.store + i32.store offset=24 + local.get $2 local.get $7 - call $~lib/util/string/strtol - local.get $5 - i32.const 60 - i32.mul - i32.add - i32.const 60000 - i32.mul + call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer local.get $2 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.store offset=4 local.get $2 - local.get $3 - i32.const 1 - i32.add - call $~lib/string/String#substring@varargs - local.tee $5 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/util/string/strtol - i32.const 3600000 - i32.mul + i32.const 3456 + call $~lib/array/Array<~lib/string/String>#push end - local.tee $5 - i32.sub local.get $5 - local.get $0 - i32.const 45 + i32.const 1 + i32.add + local.tee $5 + local.get $8 i32.eq - select - local.set $5 - br $for-break0 + br_if $folding-inner3 + local.get $4 + local.get $9 + i32.add + local.set $3 + br $while-continue|1 end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 local.get $3 - call $~lib/string/String#substring - local.tee $2 - i32.store offset=8 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3520 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.tee $2 - i32.const 1 - i32.le_s - if - i32.const 1056 - i32.const 1104 - i32.const 96 - i32.const 21 - 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 $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $3 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/util/string/strtol - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $7 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/util/string/strtol - local.set $7 - local.get $2 - i32.const 3 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 3552 - i32.const 0 - call $~lib/string/String#indexOf - local.tee $0 - i32.const -1 - i32.xor - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - local.get $0 - call $~lib/string/String#substring - local.tee $6 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/util/string/strtol - local.set $6 - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/string/String#substr$387 (result i32) + i32.eqz + if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=44 - local.get $0 - i32.const 1 - i32.add - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - i32.const 3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $8 local.get $0 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $8 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $0 - end + i32.store offset=24 + local.get $2 local.get $0 - i32.sub - local.tee $8 - local.get $8 - i32.const 3 - i32.gt_s - select + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner3 + end + local.get $6 + local.get $3 + i32.sub + local.tee $1 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1 i32.shl - local.tee $8 - i32.const 0 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3456 - br $__inlined_func$~lib/string/String#substr$387 - end - global.get $~lib/memory/__stack_pointer - local.get $8 + local.tee $1 i32.const 2 call $~lib/rt/itcms/__new - local.tee $10 - i32.store offset=4 - local.get $10 - local.get $2 + local.tee $4 + i32.store offset=32 + local.get $4 local.get $0 + local.get $3 i32.const 1 i32.shl i32.add - local.get $8 + local.get $1 memory.copy global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3456 + call $~lib/array/Array<~lib/string/String>#push end - 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 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + br $folding-inner4 + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/__newArray + local.set $2 + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.store + global.set $~lib/rt/itcms/iter + local.get $1 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 + i32.load offset=4 + local.tee $2 + i32.const 3 i32.and - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 1872 - i32.store - block $__inlined_func$~lib/string/String#padEnd$388 - i32.const 1868 - i32.load - i32.const -2 + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 i32.and - local.tee $8 - i32.eqz - local.get $10 - i32.const 6 - i32.gt_u + local.get $1 i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#padEnd$388 - end - global.get $~lib/memory/__stack_pointer - i32.const 6 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 i32.store offset=4 - local.get $2 + i32.const 0 + global.set $~lib/rt/itcms/visitCount local.get $0 - local.get $10 - memory.copy - i32.const 6 - local.get $10 - i32.sub - local.tee $0 - local.get $8 - i32.gt_u - if - local.get $0 - local.get $0 - i32.const 2 - i32.sub - local.get $8 - i32.div_u - local.get $8 - i32.mul - local.tee $0 - i32.sub - local.set $11 - local.get $2 - local.get $10 - i32.add - local.set $12 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.gt_u - if - local.get $4 - local.get $12 - i32.add - i32.const 1872 - local.get $8 - memory.copy - local.get $4 - local.get $8 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $10 - i32.add + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 41236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if local.get $0 - i32.add - i32.const 1872 - local.get $11 - memory.copy - else local.get $2 - local.get $10 - i32.add - i32.const 1872 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 local.get $0 - memory.copy + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 41236 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 41236 + 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.store offset=48 - global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + local.set $2 local.get $0 - i32.store + i32.const 15 + i32.and + i32.const 1 local.get $0 - call $~lib/util/string/strtol - local.set $4 - else - global.get $~lib/memory/__stack_pointer + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1536 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer local.get $2 + i32.load + i32.const 1 + i32.or i32.store local.get $2 - call $~lib/util/string/strtol - local.set $6 + call $~lib/rt/tlsf/insertBlock end end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/number/I32#toString (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 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + 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/number/itoa32$73 + 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 $2 + br $__inlined_func$~lib/util/number/itoa32$73 + 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 + i32.const 1 + i32.shl + local.tee $3 + 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1616 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get local.tee $1 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/string/strtol i32.const 1 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.shl + local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + 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 $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + local.get $4 + 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 - call $~lib/array/Array<~lib/string/String>#get:length - local.tee $8 - i32.const 2 - i32.ge_s - if (result i32) - global.get $~lib/memory/__stack_pointer + i32.const 100 + i32.ge_u + if + local.get $5 + 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 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $5 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 - local.get $1 - call $~lib/util/string/strtol - local.set $1 - local.get $8 - i32.const 3 - i32.ge_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.store offset=68 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/util/string/strtol - else - i32.const 1 - end else + local.get $5 + 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.set $0 - local.get $1 - local.get $0 local.get $3 - local.get $7 - local.get $6 - local.get $4 - call $~lib/date/epochMillis - local.get $5 - i64.extend_i32_s - i64.sub - call $~lib/date/Date#constructor + if + local.get $2 + i32.const 45 + i32.store16 + end global.get $~lib/memory/__stack_pointer - i32.const 72 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - return end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 ) (func $start:std/date (local $0 i32) @@ -10578,60 +10634,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__newArray (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 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - 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.const 2 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - i32.const 16 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/std/hash.release.wat b/tests/compiler/std/hash.release.wat index 1620d1e03e..0b046b6c23 100644 --- a/tests/compiler/std/hash.release.wat +++ b/tests/compiler/std/hash.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32))) + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (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 34172)) (memory $0 1) @@ -27,30 +27,6 @@ (data $9.1 (i32.const 1368) "\02\00\00\00\12\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i") (export "memory" (memory $0)) (start $~start) - (func $~start - i32.const 0 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1056 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1088 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1120 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1152 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1184 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1216 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1248 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1280 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1328 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1376 - call $~lib/util/hash/HASH<~lib/string/String|null> - ) (func $~lib/util/hash/HASH<~lib/string/String|null> (param $0 i32) (local $1 i32) (local $2 i32) @@ -249,4 +225,28 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + i32.const 0 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1088 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1120 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1152 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1184 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1216 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1248 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1280 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1328 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1376 + call $~lib/util/hash/HASH<~lib/string/String|null> + ) ) diff --git a/tests/compiler/std/map.release.wat b/tests/compiler/std/map.release.wat index 1df1b7174a..112ed92024 100644 --- a/tests/compiler/std/map.release.wat +++ b/tests/compiler/std/map.release.wat @@ -5,25 +5,25 @@ (type $3 (func)) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32))) - (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 i64) (result i32))) + (type $6 (func (param i32 i64) (result i32))) + (type $7 (func (param i32 i32 i32) (result i32))) (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64))) - (type $10 (func (result i32))) - (type $11 (func (param i32 i64 i32) (result i32))) - (type $12 (func (param i32 i64 i32))) - (type $13 (func (param i32 i64 i64))) - (type $14 (func (param i32 i64))) - (type $15 (func (param i32 f32) (result i32))) - (type $16 (func (param i32 f64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 f64) (result i32))) + (type $11 (func (param i32 f32) (result i32))) + (type $12 (func (param i32 i64 i32) (result i32))) + (type $13 (func (param i32 i64 i32))) + (type $14 (func (param i32 i32 i64))) + (type $15 (func (param i32 i64))) + (type $16 (func (param i32 i64 i64))) (type $17 (func (param i32 f32 i32) (result i32))) - (type $18 (func (param i32 f32 i32))) - (type $19 (func (param i32 f32 f32))) - (type $20 (func (param i32 f32))) - (type $21 (func (param i32 f64 i32) (result i32))) - (type $22 (func (param i32 f64 i32))) + (type $18 (func (param i32 f64 i32) (result i32))) + (type $19 (func (param i32 f64 i32))) + (type $20 (func (param i32 f32 i32))) + (type $21 (func (param i32 f64))) + (type $22 (func (param i32 f32))) (type $23 (func (param i32 f64 f64))) - (type $24 (func (param i32 f64))) + (type $24 (func (param i32 f32 f32))) (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)) @@ -62,796 +62,1962 @@ (data $14 (i32.const 1760) "!\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\89\10\00B\08\00\00\02\t\00\00P\88\10\00\10\t\12\00\10\89\00\00B\00\00\00P\80\00\00\10\t\11\00\82\08\00\00\90\08\11\00\10\t\01\00\82\00\00\00\90\00\01\00\10\t\02\00\02\01\00\00\10\01\02\00\10\t\14\00\02\n\00\00\10\n\14\00\10\t\04\00\02\02\00\00\10\02\04\00\10\t2\00\02\19\00\00\10\192\00\10\t4\00\02\1a\00\00\10\1a4") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1616 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + 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 -4 + i32.const 3 i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$1422 - local.get $0 + i32.const 20 + i32.sub i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.tee $1 + 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 local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34664 - i32.lt_u + i32.const 3 + i32.eq i32.and - i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/itcms/Object#makeGray end - br $__inlined_func$~lib/rt/itcms/Object#unlink$1422 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable end - 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 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + ) + (func $~lib/arraybuffer/ArrayBuffer#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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 i32.const 1 - else - local.get $1 - i32.const 1760 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1764 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1504 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 + i32.const 1 + 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 - i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz + (func $"~lib/map/Map#get:size" (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 1896 + i32.lt_s if - return + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer 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 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + local.get $4 + local.get $2 + i32.const 12 + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 i32.sub - local.set $2 - local.get $3 + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u + local.get $5 local.get $2 - i32.const 23 - i32.lt_u + i32.load + i32.const -4 i32.and - i32.eqz + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + 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 - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 + local.get $0 + local.get $1 + 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 $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 local.tee $3 - i32.const 7 - i32.sub - local.set $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + local.get $1 + 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.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (result i32) + (local $0 i32) + (local $1 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 1896 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 + 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 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 + local.get $0 local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + i32.store offset=8 local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - return + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.tee $3 - i32.const 2 - i32.store + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - local.get $3 - i32.store offset=1568 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $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 + call $"~lib/map/Map#find" i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i64) (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 1896 + i32.lt_s if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34672 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 36240 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34672 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34672 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.get $0 + local.get $1 + 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 $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + local.get $1 + 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 $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 + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + local.get $1 + 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 $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 + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + 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 + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i64) (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + local.get $1 + 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 $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + local.get $1 + 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 $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 + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 f64) (result i32) + (local $2 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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + local.get $1 + local.get $1 + 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 $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 f32) (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + local.get $1 + 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 + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $5 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + local.get $2 + i32.shl + local.set $1 + local.get $3 + if + i32.const 1073741820 + local.get $5 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew$1377 + local.get $4 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $4 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$1377 + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $4 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $1 + local.get $3 + i32.lt_u + select + memory.copy + end + local.get $2 + local.get $4 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $0 + call $~lib/array/Array#constructor + local.tee $5 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $3 + local.get $2 + i32.const 12 + i32.mul + i32.add + local.tee $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + local.get $4 + i32.load offset=4 + 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 + end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $"~lib/map/Map#clear" (param $0 i32) + (local $1 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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + 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/map/Map#find" (param $0 i32) (param $1 f32) (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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.add + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f32.load + f32.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 $for-loop|0 + br $while-continue|0 end end - i32.const 34672 - i32.const 36244 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34672 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~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 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1113,667 +2279,453 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + (func $"~lib/map/Map#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 1896 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 + i32.const 34688 + i32.const 34736 + 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.store local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + local.get $1 + i32.const 255 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + 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 1073741804 - i32.ge_u + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 local.get $0 - i32.const 16 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (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 1896 + i32.lt_s if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u + 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) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub + i32.const 0 else - local.get $5 + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $0 i32.const 15 - i32.and + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + i32.const 34688 + i32.const 34736 i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 - local.get $3 + local.get $0 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.const 2 + i32.shl + i32.add i32.load - i32.const -4 - i32.and + 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 + 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 - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + local.get $1 + 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 $0 local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end + 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 + call $"~lib/map/Map#find" + local.tee $0 i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 + local.get $0 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 - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~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 - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - 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 1896 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - 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.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - 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 ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34664 + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result 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 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 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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 1352 - i32.const 1344 + global.get $~lib/memory/__stack_pointer + local.get $0 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 + local.get $0 + local.get $1 + 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 $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 + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz 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 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable 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 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - global.set $~lib/rt/itcms/threshold + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1822,9 +2774,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load16_u local.get $1 - i32.const 255 + i32.const 65535 i32.and i32.eq end @@ -1849,7 +2801,7 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1880,235 +2832,49 @@ 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 - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $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.load8_s - 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 -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=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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 - i32.store offset=12 + 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 + 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=20 - i32.store offset=16 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + 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) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2123,180 +2889,146 @@ unreachable end 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.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 local.get $1 - i32.extend8_s + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $3 + 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 $0 i32.const 15 i32.shr_u - local.get $3 + local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $0 i32.const 13 i32.shr_u - local.get $3 + local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $0 i32.const 16 i32.shr_u - local.get $3 + local.get $0 i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 - i32.load offset=12 - i32.eq if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 local.get $0 i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s + local.tee $2 + i32.const 1 + i32.and if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - 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 + else + local.get $1 + local.get $0 + i64.load + i64.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 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2321,10 +3053,9 @@ local.get $0 local.get $1 local.get $1 - i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761397 i32.add i32.const 17 i32.rotl @@ -2349,7 +3080,7 @@ i32.const 16 i32.shr_u i32.xor - call $"~lib/map/Map#find" + call $"~lib/map/Map#find" local.tee $0 i32.eqz if @@ -2367,7 +3098,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#get:size" (param $0 i32) (result i32) + (func $"~lib/map/Map#find" (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 @@ -2390,152 +3122,57 @@ local.get $0 i32.store local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - 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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i32.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $5 local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + 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 - i32.load - local.set $4 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - local.get $2 - i32.shl - local.set $1 - local.get $3 if - i32.const 1073741820 - local.get $5 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select + local.get $0 + i32.load offset=8 local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.set $1 - end - block $__inlined_func$~lib/rt/itcms/__renew$1377 - local.get $4 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 + i32.const 1 i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u - if - local.get $3 + if (result i32) + i32.const 0 + else local.get $1 - i32.store offset=16 - local.get $4 - local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$1377 + local.get $0 + i32.load + i32.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 $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $4 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $1 - local.get $3 - i32.lt_u - select - memory.copy - end - local.get $2 - local.get $4 - i32.ne - if - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $0 - local.get $1 - i32.store offset=8 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2557,52 +3194,57 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - i32.load offset=12 - i32.ge_u + 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 + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 130 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 i32.load offset=4 - i32.add - local.get $2 - i32.store8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2621,28 +3263,75 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 - i32.store offset=12 + local.get $1 + 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 $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + 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 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2657,104 +3346,132 @@ unreachable end 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 0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $0 i32.store + local.get $0 + i32.load global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 + local.get $0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f64.load + f64.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 - local.get $1 - i32.store offset=4 - local.get $1 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 f32) (result i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 + 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 $1 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 268435455 - i32.gt_u + i32.const 1896 + i32.lt_s if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $0 - local.get $0 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $1 - local.get $2 + i32.const 0 i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.store 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 $0 local.get $0 - i32.store offset=12 + 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 + 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 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2826,356 +3543,587 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~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 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 local.get $1 - i32.const 2 - i32.const 0 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.load offset=8 + local.set $5 local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 i32.const 4 + i32.shl + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $"~lib/map/Map#values" (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=16 - local.tee $0 - call $~lib/array/Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|0 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add local.get $2 - i32.gt_s + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if - local.get $3 - local.get $2 - i32.const 12 - i32.mul - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - local.get $1 - local.get $4 - i32.load offset=4 - 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.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 + local.get $2 + i32.const 2 + i32.or i32.store - local.get $5 - local.get $1 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $"~lib/map/Map#constructor" (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const -4 + i32.and + local.tee $2 i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s + i32.lt_u if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - 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 24 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 + local.get $4 local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#get:length (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 1896 - i32.lt_s + local.get $2 + i32.add + i32.ne if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 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.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 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.store + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 - local.get $1 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add i32.const 2 i32.shl i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/itcms/Object#makeGray (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) - 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 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if local.get $0 - i32.store + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$1422 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34664 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$1422 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1760 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1764 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $8 - local.set $3 + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~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 + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + 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 1896 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + 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.sub @@ -3183,7 +4131,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3192,298 +4140,496 @@ i32.store local.get $0 i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 4 i32.add - i32.load - local.set $3 - block $"__inlined_func$~lib/map/Map#find$1378" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - 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 - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1378" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - 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 - local.set $3 - end - local.get $3 - if - local.get $3 - local.get $2 - i32.store8 offset=1 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $7 - 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 1896 - i32.lt_s - br_if $folding-inner1 - 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.get $7 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $9 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=4 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=8 - local.set $5 + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $5 + i32.store offset=4 local.get $0 - i32.load offset=16 - i32.const 3 + i32.load offset=4 + i32.const 1 i32.shl - i32.add - local.set $10 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $5 - local.get $10 - i32.ne - if - local.get $5 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $5 - i32.load8_s - local.tee $11 - i32.store8 - local.get $3 - local.get $5 - i32.load8_s offset=1 - i32.store8 offset=1 - local.get $3 - local.get $6 - local.get $7 - local.get $11 - i32.const -1028477379 - i32.mul - i32.const 374761394 - 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=4 - local.get $11 - local.get $3 - i32.store - local.get $3 - i32.const 8 - i32.add - local.set $3 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $2 + 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 12 + 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3491,77 +4637,313 @@ local.get $0 i32.store offset=4 local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store8 offset=1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.load offset=20 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 + local.get $3 local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + 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 12 + 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - i32.load - local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $8 - 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 local.get $0 local.get $3 - i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 - global.set $~lib/memory/__stack_pointer - return + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + 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 - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3576,72 +4958,187 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $2 local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - i32.load - local.set $0 - loop $while-continue|0 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer 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 - 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 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + 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.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 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) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3659,173 +5156,70 @@ 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.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 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 i32.load offset=8 - local.set $7 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer 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 + local.tee $0 + call $~lib/array/Array#constructor + local.tee $5 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s if - local.get $7 - i32.load offset=8 + local.get $3 + local.get $2 + i32.const 4 + i32.shl + i32.add + local.tee $4 + i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $2 - local.get $7 - i32.load - local.tee $8 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store - local.get $2 - local.get $7 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $6 + local.get $5 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 + local.get $4 + i32.load offset=8 + call $~lib/array/Array#__set + local.get $1 + i32.const 1 i32.add - local.set $2 + local.set $1 end - local.get $7 - i32.const 12 + local.get $2 + i32.const 1 i32.add - local.set $7 - br $while-continue|0 + local.set $2 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 + local.get $1 + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3856,9 +5250,21 @@ local.get $0 local.get $1 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.const 374761397 i32.add i32.const 17 i32.rotl @@ -3884,12 +5290,12 @@ local.get $3 i32.xor local.tee $4 - call $"~lib/map/Map#find" + call $"~lib/map/Map#find" local.tee $3 if local.get $3 local.get $2 - i32.store offset=4 + i32.store offset=8 else global.get $~lib/memory/__stack_pointer local.get $0 @@ -3941,7 +5347,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 @@ -3966,15 +5372,15 @@ i32.store offset=16 local.get $3 local.get $5 - i32.const 12 - i32.mul + i32.const 4 + i32.shl i32.add local.tee $3 local.get $1 - i32.store + i64.store local.get $3 local.get $2 - i32.store offset=4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3992,12 +5398,12 @@ i32.store local.get $0 i32.load - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $3 - local.get $1 + local.get $2 local.get $4 local.get $0 i32.load offset=4 @@ -4007,7 +5413,7 @@ i32.add local.tee $0 i32.load - i32.store offset=8 + i32.store offset=12 local.get $0 local.get $3 i32.store @@ -4017,8 +5423,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) - (local $2 i32) + (func $"~lib/map/Map#clear" (param $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4040,124 +5446,262 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 local.get $1 + i32.store + local.get $0 local.get $1 - i32.extend8_s + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761395 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 i32.const 15 i32.shr_u - local.get $1 + local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 i32.const 13 i32.shr_u - local.get $1 + local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 i32.const 16 i32.shr_u - local.get $1 + local.get $3 i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 if + local.get $3 + local.get $2 + i32.store offset=4 + else global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - 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.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 local.get $0 i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store 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.load + local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 + local.get $3 local.get $1 - call $"~lib/map/Map#rehash" + 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 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#clear" (param $0 i32) - (local $1 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i64) + (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 global.get $~lib/memory/__stack_pointer @@ -4175,979 +5719,1104 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 local.get $1 - i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~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 1896 - i32.lt_s - br_if $folding-inner1 - 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 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 + 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 $4 + i32.const 15 + i32.shr_u + local.get $4 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + i32.const 13 + i32.shr_u + local.get $4 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + i32.const 16 + i32.shr_u + local.get $4 + i32.xor + local.tee $5 + call $"~lib/map/Map#find" + local.tee $4 + if + local.get $4 + local.get $2 i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=20 + else global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - loop $for-loop|0 + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - if + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 - local.get $0 local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 - 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.load offset=4 i32.const 1 - i32.add - local.set $0 - 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 $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + local.get $6 + i32.const 4 + i32.shl + i32.add + local.tee $4 local.get $1 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|1 + f64.store + local.get $4 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $4 + local.get $2 + 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=12 + local.get $0 + local.get $4 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 local.get $0 - local.get $0 - i32.const 20 - i32.add - call $"~lib/map/Map#set" + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $0 + i32.load offset=4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.shl + i32.const 1 + i32.or end + call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 - local.get $1 - 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 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $6 - global.get $~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 1896 - i32.lt_s - br_if $folding-inner1 - 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 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 + local.get $0 i32.store - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $6 - local.get $6 - i32.const 8 - i32.le_u - select - local.tee $0 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 + 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 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $7 - local.get $8 + local.get $0 i32.store - local.get $7 - local.get $8 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $8 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.store offset=4 - local.get $7 local.get $0 - i32.store offset=8 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=12 + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + i32.store + local.get $3 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $5 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - local.get $8 - i32.load8_s - 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|00 - end + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~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 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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 + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $0 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.const 31 local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.clz i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - 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 24 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + local.tee $2 i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $3 - i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=4 - i32.add - i32.load8_s - local.set $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.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34672 + i32.const 0 + i32.store + i32.const 36240 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34672 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $"~lib/map/Map#has" - i32.eqz + i32.const 16 + i32.lt_u if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34672 + i32.add i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 + end + i32.const 34672 + i32.const 36244 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34672 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1616 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if - i32.const 0 - i32.const 1568 - i32.const 36 + local.get $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 + i32.and i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 + end + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $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 - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_s + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 + local.get $7 + i32.load8_u + 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 $0 - 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 $0 - i32.const 1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.set $0 - br $for-loop|4 + 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#delete" (param $0 i32) (param $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 global.get $~lib/memory/__stack_pointer @@ -5162,8 +6831,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -5180,41 +6849,117 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + 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) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (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 i32) - (local $6 i32) + (local $6 i64) (local $7 i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -5244,7 +6989,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -5253,8 +6998,8 @@ i32.const 3 i32.div_s local.tee $5 - i32.const 12 - i32.mul + i32.const 4 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $3 i32.store offset=4 @@ -5263,340 +7008,160 @@ i32.store offset=8 local.get $0 i32.load offset=8 - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $7 + local.get $8 local.get $0 i32.load offset=16 - i32.const 12 - i32.mul + i32.const 4 + i32.shl i32.add local.set $4 local.get $3 local.set $2 loop $while-continue|0 local.get $4 - local.get $7 + local.get $8 i32.ne if - local.get $7 - i32.load offset=8 + local.get $8 + i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 - i32.load8_u - local.tee $8 - i32.store8 + local.get $8 + i64.load + local.tee $6 + i64.store local.get $2 - local.get $7 - i32.load offset=4 - i32.store offset=4 + local.get $8 + i32.load offset=8 + i32.store offset=8 local.get $2 - local.get $6 + local.get $7 local.get $1 - local.get $8 + local.get $6 + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + 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 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $9 i32.const 16 i32.shr_u + local.get $9 i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $8 + local.tee $9 i32.load - i32.store offset=8 - local.get $8 + 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 $7 - i32.const 12 - i32.add - local.set $7 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $"~lib/map/Map#rehash" + local.get $8 + i32.const 16 + i32.add + local.set $8 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - 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 12 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $0 + local.get $7 + i32.store + local.get $0 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5611,504 +7176,330 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 local.get $1 - i32.const 255 - i32.and + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + 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 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 16 i32.shr_u + local.get $2 i32.xor - call $"~lib/map/Map#find" - local.tee $0 + call $"~lib/map/Map#find" + local.tee $2 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 - 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) - (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 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 + i32.const 8 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $8 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $3 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$1383" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - 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 - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1383" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - 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 - local.set $3 - end - local.get $3 + local.get $2 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $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 $3 - local.get $2 - i32.store8 offset=1 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 + local.get $7 + i32.load + local.tee $8 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $7 - 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 1896 - i32.lt_s - br_if $folding-inner1 - 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.get $2 local.get $7 - i32.const 1 + 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 - local.tee $3 + 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 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $9 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl i32.add - local.set $10 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $5 - local.get $10 - i32.ne - if - local.get $5 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $5 - i32.load8_u - local.tee $11 - i32.store8 - local.get $3 - local.get $5 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - local.get $6 - local.get $7 - local.get $11 - i32.const -1028477379 - i32.mul - i32.const 374761394 - 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=4 - local.get $11 - local.get $3 - i32.store - local.get $3 - i32.const 8 - i32.add - local.set $3 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $8 + i32.load i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 + local.get $8 + local.get $2 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 + local.get $2 + i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store8 offset=1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $8 - 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 $3 - i32.store + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -6134,11 +7525,9 @@ local.get $0 local.get $1 local.get $1 - i32.const 255 - i32.and i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761397 i32.add i32.const 17 i32.rotl @@ -6163,7 +7552,7 @@ i32.shr_u local.get $1 i32.xor - call $"~lib/map/Map#find" + call $"~lib/map/Map#find" local.tee $1 i32.eqz if @@ -6239,16 +7628,14 @@ i32.store local.get $0 local.get $1 - call $"~lib/map/Map#rehash" + call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (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) @@ -6257,911 +7644,1352 @@ (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~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 1896 - i32.lt_s - br_if $folding-inner1 - 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 24 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $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 - 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_u + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 + 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 $0 - local.get $0 - i32.const 20 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 + 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 - 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 + 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 $0 - br $for-loop|1 + local.set $2 end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 - local.get $1 - i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (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 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 8 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + 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) global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=8 - local.set $5 + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $6 - global.get $~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 1896 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - br_if $folding-inner1 - 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 16 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 + else i32.const 0 - i32.store offset=8 + end + if global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $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.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 1073741820 - i32.gt_u + i32.ne if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $6 - local.get $6 - i32.const 8 - i32.le_u - select - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $7 - local.get $8 - i32.store - local.get $7 - local.get $8 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $3 - local.get $6 - i32.lt_s + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $5 - local.get $3 - i32.const 12 + local.get $2 + local.get $7 + i32.load8_s + 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 -1028477379 i32.mul + i32.const 374761394 i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.tee $8 - i32.load offset=8 - i32.const 1 + 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.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - local.get $8 - i32.load8_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $3 - br $for-loop|00 + 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 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/array/Array#set:length + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (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 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 - global.get $~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 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + 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) global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $4 + local.get $0 i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 + local.get $0 i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + local.get $0 + i32.load offset=12 i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + i32.mul i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + i32.div_s + i32.lt_s + else i32.const 0 - i32.store offset=20 + end + if global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $8 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 local.get $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $3 - i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store + local.get $8 + i64.load + local.tee $6 + i64.store local.get $2 - local.get $7 - i32.load offset=4 - i32.add - i32.load8_u - local.set $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.get $0 - i32.store offset=4 - local.get $0 + local.get $8 + i32.load offset=8 + i32.store offset=8 local.get $2 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.get $7 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 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" + 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 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=12 + local.get $9 local.get $2 - i32.const 1 + i32.store + local.get $2 + i32.const 16 i32.add local.set $2 - br $for-loop|2 end + local.get $8 + i32.const 16 + i32.add + local.set $8 + br $while-continue|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $0 + local.get $7 + i32.store + local.get $0 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + 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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $"~lib/map/Map#find" + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end + end + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 + local.get $0 + i32.store + local.get $0 + local.get $2 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $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 - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 + 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 $0 - local.get $0 - i32.const 10 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 $0 - i32.const 1 + 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.set $0 - br $for-loop|4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (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 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 24 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + 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) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7176,67 +9004,179 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + 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.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $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_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 -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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 local.get $0 - i32.store + local.get $3 + i32.store offset=8 local.get $0 - i32.load + local.get $3 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $2 + i32.store offset=8 local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - 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 + local.get $5 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#delete" (param $0 i32) (param $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 global.get $~lib/memory/__stack_pointer @@ -7251,8 +9191,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -7268,41 +9208,118 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + 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) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (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 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 16 i32.sub @@ -7332,7 +9349,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -7340,9 +9357,9 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 - i32.const 12 - i32.mul + local.tee $7 + i32.const 4 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $3 i32.store offset=4 @@ -7351,89 +9368,103 @@ i32.store offset=8 local.get $0 i32.load offset=8 - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $7 + local.get $9 local.get $0 i32.load offset=16 - i32.const 12 - i32.mul + i32.const 4 + i32.shl i32.add - local.set $4 + local.set $6 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 - local.get $7 + local.get $6 + local.get $9 i32.ne if - local.get $7 - i32.load offset=8 + local.get $9 + i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 - i32.load16_s - local.tee $8 - i32.store16 + local.get $9 + f64.load + local.tee $5 + f64.store local.get $2 - local.get $7 - i32.load offset=4 - i32.store offset=4 + local.get $9 + i32.load offset=8 + i32.store offset=8 local.get $2 - local.get $6 - local.get $1 local.get $8 + local.get $1 + local.get $5 + i64.reinterpret_f64 + local.tee $4 + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + 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 i32.const 15 i32.shr_u + local.get $10 i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $10 i32.const 13 i32.shr_u + local.get $10 i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $10 i32.const 16 i32.shr_u + local.get $10 i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 + local.tee $10 + i32.load + i32.store offset=12 + local.get $10 local.get $2 i32.store local.get $2 - i32.const 12 + i32.const 16 i32.add local.set $2 end - local.get $7 - i32.const 12 + local.get $9 + i32.const 16 i32.add - local.set $7 + local.set $9 br $while-continue|0 end end @@ -7441,13 +9472,13 @@ local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.store offset=12 local.get $0 - local.get $6 + local.get $8 i32.store local.get $0 - local.get $6 + local.get $8 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 @@ -7471,7 +9502,7 @@ local.get $0 i32.store offset=8 local.get $0 - local.get $5 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 @@ -7488,12 +9519,12 @@ 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#delete" (param $0 i32) (param $1 f64) + (local $2 i64) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7511,18 +9542,28 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 local.get $1 - i32.extend16_s + 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.const 374761395 i32.add i32.const 17 i32.rotl @@ -7547,284 +9588,99 @@ i32.shr_u local.get $3 i32.xor - local.tee $4 - call $"~lib/map/Map#find" + call $"~lib/map/Map#find" local.tee $3 + i32.eqz if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 8 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 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - 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 + global.set $~lib/memory/__stack_pointer + return end - 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 $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + local.get $3 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.const 4 local.get $0 - i32.load offset=12 + i32.load offset=20 + local.tee $4 + local.get $4 + 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 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + if (result i32) + global.get $~lib/memory/__stack_pointer 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.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $3 - i32.store offset=12 + call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (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 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7839,469 +9695,318 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 1 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) - (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 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $8 - 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 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - 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$1388" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - 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 - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1388" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - 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 - local.set $3 - end - local.get $3 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $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 $3 - local.get $2 - i32.store16 offset=2 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $7 - 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 1896 - i32.lt_s - br_if $folding-inner1 - 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.get $7 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $9 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + i32.load + local.set $8 + local.get $2 + local.get $7 + f32.load + f32.store + local.get $2 + local.get $7 + i32.load offset=4 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - local.set $10 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $5 - local.get $10 - i32.ne - if - local.get $5 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $5 - i32.load16_s - local.tee $11 - i32.store16 - local.get $3 - local.get $5 - i32.load16_s offset=2 - i32.store16 offset=2 - local.get $3 - local.get $6 - local.get $7 - local.get $11 - i32.const -1028477379 - i32.mul - i32.const 374761395 - 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=4 - local.get $11 - local.get $3 - i32.store - local.get $3 - i32.const 8 - i32.add - local.set $3 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $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 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 + local.get $8 + local.get $2 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 + local.get $2 + i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer + local.set $2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store16 offset=2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + local.get $7 + i32.const 12 i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $3 - i32.store + local.set $7 + br $while-continue|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + 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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $"~lib/map/Map#find" + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) - (local $2 i32) + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $"~lib/map/Map#rehash" + end global.get $~lib/memory/__stack_pointer i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~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 global.get $~lib/memory/__stack_pointer @@ -8316,153 +10021,359 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u + 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 130 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (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 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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.store local.get $1 - i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.tee $3 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~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 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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 - i32.load offset=8 i32.const 1 - i32.or - i32.store offset=8 + i32.const 0 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $0 - i32.load offset=20 - i32.const 1 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.store offset=20 + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + 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=4 - i32.const 1 - i32.shr_u - local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $1 - 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.load offset=12 i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + 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 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - local.get $1 - call $"~lib/map/Map#rehash" + local.get $3 + i32.store offset=12 end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/map/testNumeric" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34664 + 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/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) (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 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~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 1896 i32.lt_s @@ -8471,269 +10382,441 @@ 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 24 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 + i32.const 0 i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.store 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 $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $8 + local.set $3 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=16 + i32.const 1896 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 - i32.store offset=20 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - loop $for-loop|0 + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + 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$1383" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + 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 + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1383" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + 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 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i32.store8 offset=1 + else + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 - i32.lt_s + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + 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 1896 + i32.lt_s + br_if $folding-inner1 + 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.get $7 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $10 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load8_u + local.tee $11 + i32.store8 + local.get $3 + local.get $5 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761394 + 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=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $6 + i32.store offset=12 local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $6 + i32.store local.get $0 - call $"~lib/map/Map#get" + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer 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 + i32.store offset=8 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.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $7 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - 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 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $4 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#get" + local.get $4 + i32.store offset=8 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 $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=8 local.get $0 - i32.const 20 - i32.add - call $"~lib/map/Map#set" + local.get $9 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - 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 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" + i32.store offset=12 local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store8 offset=1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + 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 $3 + i32.store end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub + i32.const 12 + i32.add global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (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 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s @@ -8742,20 +10825,13 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $5 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $6 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8763,172 +10839,448 @@ i32.lt_s br_if $folding-inner1 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 16 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 i32.const 0 i32.store - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $6 - local.get $6 - i32.const 8 - i32.le_u - select - i32.const 1 - i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $7 - local.get $8 + local.get $0 i32.store - local.get $7 - local.get $8 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=12 + i32.load global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1408" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1408" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + 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 + local.set $3 + end + local.get $3 + if local.get $3 - local.get $6 - i32.lt_s + local.get $2 + i64.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - local.get $5 - local.get $3 - i32.const 12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 i32.mul - i32.add - local.tee $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 local.get $0 - local.get $8 - i32.load16_s - call $~lib/array/Array#__set + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + i32.load offset=4 i32.const 1 - i32.add - local.set $0 + i32.shl + i32.const 1 + i32.or end - local.get $3 + local.set $5 + 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 1896 + i32.lt_s + br_if $folding-inner1 + 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.get $5 i32.const 1 i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + 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 $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $11 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $6 + local.get $4 local.set $3 - br $for-loop|00 + loop $while-continue|00 + local.get $6 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $11 + i64.load + local.tee $9 + i64.store + local.get $3 + local.get $11 + i64.load offset=8 + i64.store offset=8 + local.get $3 + local.get $10 + local.get $5 + local.get $9 + 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 $9 + 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 $12 + local.get $12 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $12 + local.get $12 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $12 + local.get $12 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $12 + i32.load + i32.store offset=16 + local.get $12 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $11 + i32.const 24 + i32.add + local.set $11 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $0 + local.get $10 + i32.store + local.get $0 + local.get $10 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $8 + 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 $3 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 12 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + 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) + (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-inner0 global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -8936,410 +11288,343 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 + local.get $0 i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.tee $3 - i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $7 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.store - local.get $7 - i32.load offset=4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $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.get $0 i32.store offset=4 local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $6 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 - 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 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $6 - i32.const 20 + i32.const 16 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.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" + i32.const 1896 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" - local.get $2 + 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.get $8 i32.const 1 i32.add - local.set $2 - br $for-loop|2 - end - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s - if + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + 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 $1 + global.get $~lib/memory/__stack_pointer local.get $0 - 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 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + 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 $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $10 + i32.load + local.tee $11 + i32.store + local.get $3 + local.get $10 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $9 + local.get $8 + 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 $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 + end + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 + end end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $9 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#delete" + local.get $9 + i32.store + local.get $0 + local.get $9 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $4 + i32.store offset=12 local.get $0 + local.get $4 + i32.store offset=8 local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + local.get $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - 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 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#delete" + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=12 local.get $0 - i32.const 1 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $0 - br $for-loop|4 + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + 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 - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer return @@ -9351,528 +11636,449 @@ call $~lib/builtins/abort unreachable ) - (func $"~lib/map/Map#has" (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $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 - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) - (local $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) (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 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $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 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $8 + 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 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + 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$1393" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + 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 + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1393" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + 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 + local.set $3 + end + local.get $3 if - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + local.get $3 + local.get $2 + i32.store16 offset=2 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $2 - local.get $6 - local.get $1 - local.get $8 - 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 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 i32.mul - local.tee $8 - local.get $8 + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer i32.const 16 - i32.shr_u - i32.xor - i32.and + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + 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.get $7 + i32.const 1 + i32.add + local.tee $3 i32.const 2 i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl i32.add - local.tee $8 - i32.load + local.set $10 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load16_u + local.tee $11 + i32.store16 + local.get $3 + local.get $5 + i32.load16_u offset=2 + i32.store16 offset=2 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761395 + 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=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=8 - local.get $8 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 i32.store - local.get $2 - i32.const 12 + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer end - local.get $7 - i32.const 12 - i32.add - local.set $7 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - local.set $3 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - local.get $3 local.get $0 - i32.load offset=12 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + 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 $3 + i32.store + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 12 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 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $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 - 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 + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + 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) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9901,11 +12107,10 @@ local.get $0 i32.store local.get $1 - i32.const 65535 - i32.and + i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -9960,7 +12165,7 @@ i32.add i32.load local.set $3 - block $"__inlined_func$~lib/map/Map#find$1393" + block $"__inlined_func$~lib/map/Map#find$1378" loop $while-continue|0 local.get $3 if @@ -9973,9 +12178,9 @@ i32.const 0 else local.get $3 - i32.load16_u + i32.load8_u local.get $1 - i32.const 65535 + i32.const 255 i32.and i32.eq end @@ -9984,7 +12189,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1393" + br $"__inlined_func$~lib/map/Map#find$1378" end local.get $4 i32.const -2 @@ -10004,7 +12209,7 @@ if local.get $3 local.get $2 - i32.store16 offset=2 + i32.store8 offset=1 else global.get $~lib/memory/__stack_pointer local.get $0 @@ -10121,20 +12326,20 @@ if local.get $3 local.get $5 - i32.load16_u + i32.load8_s local.tee $11 - i32.store16 + i32.store8 local.get $3 local.get $5 - i32.load16_u offset=2 - i32.store16 offset=2 + i32.load8_s offset=1 + i32.store8 offset=1 local.get $3 local.get $6 local.get $7 local.get $11 i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -10260,210 +12465,73 @@ i32.add local.tee $3 local.get $1 - i32.store16 + i32.store8 local.get $3 local.get $2 - i32.store16 offset=2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 + i32.store8 offset=1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $8 - 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 $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#delete" (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 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz - if + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + 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 $3 + i32.store + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer return end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + i32.const 34688 + i32.const 34736 i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 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) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable ) - (func $"std/map/testNumeric" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -10472,12 +12540,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10485,296 +12557,444 @@ i32.lt_s br_if $folding-inner1 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 24 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 + local.get $0 i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=16 + local.get $0 + i32.load global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.get $1 - i32.store - loop $for-loop|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 $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 $8 + 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$1403" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1403" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + 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 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i64.store offset=8 + else + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 - i32.lt_u + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=4 local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - 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 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + 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.get $5 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + 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 $4 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#get" + i32.store offset=8 local.get $0 - i32.const 10 + i32.load offset=8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $11 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $6 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $6 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $11 + i64.load + local.tee $9 + i64.store + local.get $3 + local.get $11 + i64.load offset=8 + i64.store offset=8 + local.get $3 + local.get $10 + local.get $5 + local.get $9 + 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 $9 + 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 $12 + local.get $12 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $12 + local.get $12 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $12 + local.get $12 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $12 + i32.load + i32.store offset=16 + local.get $12 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $11 + i32.const 24 + i32.add + local.set $11 + br $while-continue|00 + end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $0 + local.get $10 + 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 - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_u - if + local.get $10 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - 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 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $4 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#get" + local.get $4 + i32.store offset=8 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 $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=8 local.get $0 - i32.const 20 - i32.add - call $"~lib/map/Map#set" + local.get $7 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - 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 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" + i32.store offset=12 local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $8 + 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 $3 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 - local.get $1 - 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 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=16 - local.set $6 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub + i32.const 12 + i32.add global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + 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) + (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 1896 i32.lt_s @@ -10783,163 +13003,459 @@ 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 16 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $6 - local.get $6 - i32.const 8 - i32.le_u - select - i32.const 1 - i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new + local.get $0 + i32.store + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor local.tee $8 - i32.store offset=8 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $7 - local.get $8 - i32.store - local.get $7 - local.get $8 - call $~lib/rt/itcms/__link + i32.const 1896 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $8 - i32.store offset=4 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=12 + i32.store + local.get $0 + i32.load global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1388" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + 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 + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1388" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + 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 + local.set $3 + end + local.get $3 + if local.get $3 - local.get $6 - i32.lt_s + local.get $2 + i32.store16 offset=2 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - local.get $5 - local.get $3 - i32.const 12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 i32.mul - i32.add - local.tee $8 - i32.load offset=8 + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + 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 1896 + i32.lt_s + br_if $folding-inner1 + 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.get $7 i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - local.get $8 - i32.load16_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl i32.add + local.set $10 + local.get $4 local.set $3 - br $for-loop|00 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load16_s + local.tee $11 + i32.store16 + local.get $3 + local.get $5 + i32.load16_s offset=2 + i32.store16 offset=2 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761395 + 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=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + 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 $3 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/array/Array#set:length + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#keys" (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (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 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10950,701 +13466,951 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 17 + i32.const 16 + i32.const 31 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 + local.get $6 + i32.const 0 i32.store - local.get $4 - local.get $5 + local.get $6 + i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - local.get $4 - i32.const 3 + local.get $6 + i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.get $6 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 local.get $5 - i32.store offset=8 - local.get $4 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 local.get $5 - i32.store offset=8 - local.get $4 local.get $5 - call $~lib/rt/itcms/__link + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - local.get $4 - i32.const 4 + global.get $~lib/memory/__stack_pointer + local.get $7 i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=20 + local.get $6 + local.get $0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $3 - i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length + local.get $6 + i32.store offset=4 + loop $for-loop|0 local.get $2 - i32.gt_s + local.get $5 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - i32.load offset=4 + local.get $3 local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $5 - global.get $~lib/memory/__stack_pointer i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $"~lib/map/Map#has" + local.tee $7 + i32.load offset=12 + i32.const 1 + i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f64.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + 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 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store + 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 $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|2 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - 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 $6 + i32.store + local.get $6 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 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 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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.store offset=4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 local.get $3 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if + 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 $10 + 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$1418" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + f64.load + f64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1418" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + 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 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 end - i32.const 0 - local.set $0 - loop $for-loop|3 + local.get $3 + if + local.get $3 + local.get $2 + f64.store offset=8 + else + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 50 - i32.lt_u + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - 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.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" + i32.load offset=20 + global.get $~lib/memory/__stack_pointer local.get $0 - 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 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + 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.get $6 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#delete" + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 + local.get $12 local.get $0 - i32.const 1 + i32.load offset=16 + i32.const 24 + i32.mul i32.add - local.set $0 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u - if + local.set $8 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $8 + local.get $12 + i32.ne + if + local.get $12 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $12 + f64.load + local.tee $7 + f64.store + local.get $3 + local.get $12 + f64.load offset=8 + f64.store offset=8 + local.get $3 + local.get $11 + local.get $6 + local.get $7 + 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 $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=16 + local.get $13 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $12 + i32.const 24 + i32.add + local.set $12 + br $while-continue|00 + end + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $11 + i32.store offset=12 local.get $0 + local.get $11 + i32.store local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + local.get $11 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - 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 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $4 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#delete" + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#has" (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $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 - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $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 - 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 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + f64.store + local.get $3 + local.get $2 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $10 + 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 $3 + i32.store + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#keys" (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 f32) + (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 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz - if + block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub global.set $~lib/memory/__stack_pointer - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - 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) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + 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 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 i32.store - 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 $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 12 + i32.mul + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + 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 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $4 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + 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 $6 i32.store - local.get $0 + local.get $6 local.get $1 - call $"~lib/map/Map#rehash" + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"std/map/testNumeric" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 f32) (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 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -11653,507 +14419,482 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $1 + local.get $0 i32.store - loop $for-loop|0 + local.get $0 + local.get $1 + 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 $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 $7 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + f32.store offset=4 + else + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 - i32.lt_s + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=4 local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - 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 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + 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.get $8 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + 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 $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#get" + i32.store offset=8 local.get $0 - i32.const 10 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $4 + local.set $3 + loop $while-continue|0 + 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 $10 + i32.load + local.set $11 + local.get $3 + local.get $10 + f32.load + f32.store + local.get $3 + local.get $10 + f32.load offset=4 + f32.store offset=4 + local.get $3 + local.get $9 + local.get $8 + 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 + i32.const 15 + i32.shr_u + local.get $11 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + i32.const 13 + i32.shr_u + local.get $11 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + i32.const 16 + i32.shr_u + local.get $11 + 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 $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 + end + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 + end end + global.get $~lib/memory/__stack_pointer 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.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_s - if + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $9 + i32.store offset=12 local.get $0 - 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 $9 + i32.store + local.get $0 + local.get $9 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $8 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#get" + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 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 $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=8 local.get $0 - i32.const 20 - i32.add - call $"~lib/map/Map#set" + local.get $6 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - 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 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" + i32.store offset=12 local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + f32.store + local.get $3 + local.get $2 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + 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 - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - i32.const 8 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $5 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 24 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load offset=16 - local.tee $6 - call $~lib/array/Array#constructor - local.tee $2 i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $5 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $0 - local.get $7 - 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|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $0 - call $~lib/array/Array#set:length + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 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=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 + i32.const 3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $4 - i32.store offset=16 + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $5 - i32.store offset=20 - i32.const 0 - local.set $3 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $6 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $7 - 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 - local.get $4 - i32.store offset=4 - local.get $4 - local.get $6 - local.get $6 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $6 - local.get $6 - call $"~lib/map/Map#set" - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - 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 $1 + i32.const 4 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.store offset=4 - local.get $5 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 local.get $0 - i32.const 50 - i32.lt_s + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $0 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 - i32.const 50 + i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable @@ -12166,18 +14907,18 @@ local.get $0 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $0 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 i32.const 1568 - i32.const 52 + i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable @@ -12187,17 +14928,15 @@ i32.store offset=4 local.get $1 local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + call $"~lib/map/Map#get" local.get $0 - call $"~lib/map/Map#has" + i32.const 10 + i32.add + i32.ne if i32.const 0 i32.const 1568 - i32.const 54 + i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable @@ -12206,7 +14945,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer @@ -12214,999 +14953,730 @@ i32.store offset=4 local.get $1 call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - 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/map/Map#has" (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $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 - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $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.const 100 i32.ne if - local.get $7 - 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_u if - local.get $2 - local.get $7 - i32.load - local.tee $8 - i32.store - local.get $2 - local.get $7 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $2 - local.get $6 local.get $1 - local.get $8 - i32.const -1028477379 - i32.mul - i32.const 374761397 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 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.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 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 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 i32.add - local.set $2 - end - local.get $7 - i32.const 12 - i32.add - local.set $7 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - else + local.get $1 + call $"~lib/map/Map#get:size" + 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.get $0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store - local.get $0 + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.load offset=16 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $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 1896 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $7 i32.store - local.get $0 - i32.load offset=12 - i32.eq + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 1073741820 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 local.get $3 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s + local.get $6 i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 i32.const 1 - i32.shl + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load8_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 i32.const 1 - i32.or + i32.add + local.set $3 + br $for-loop|00 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store + local.get $7 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~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 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 + i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 24 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 + local.get $4 i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 + local.get $4 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 + local.get $5 + i32.store offset=8 local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load + local.get $5 i32.store offset=8 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $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 - 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 - 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) - (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-inner0 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner0 + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 0 - i32.store offset=8 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 + i32.const 12 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $7 - call $"~lib/map/Map#find" + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 + i32.store offset=20 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=4 - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $8 - 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 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $8 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.get $7 i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.add + i32.load8_u + local.set $5 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=8 - local.set $10 + local.get $2 + call $~lib/array/Array#__get + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $10 - 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 $10 - i32.ne - if - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $10 - i32.load - local.tee $11 - i32.store - local.get $3 - local.get $10 - i32.load offset=4 - i32.store offset=4 - local.get $3 - local.get $9 - local.get $8 - 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 $3 - i32.store - local.get $3 - i32.const 12 - i32.add - local.set $3 - end - local.get $10 - i32.const 12 - i32.add - local.set $10 - br $while-continue|0 - end + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + 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 $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + 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 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $9 - i32.store + call $"~lib/map/Map#get" local.get $0 - local.get $9 - call $~lib/rt/itcms/__link + 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 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $8 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $4 - i32.store offset=8 + 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 $0 - local.get $4 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $6 - i32.store offset=12 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + 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 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=12 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + 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 $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - 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 12 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -13218,152 +15688,17 @@ call $~lib/builtins/abort unreachable ) - (func $"~lib/map/Map#delete" (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 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - 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) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/map/testNumeric" + (func $"std/map/testNumeric" (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (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 24 i32.sub @@ -13394,7 +15729,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 18 + i32.const 24 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -13422,7 +15757,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - i32.const 48 + i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 global.get $~lib/memory/__stack_pointer @@ -13459,16 +15794,16 @@ local.get $1 i32.store loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_u + local.get $2 + i64.const 100 + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -13481,17 +15816,18 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - local.get $0 + local.get $2 + local.get $2 + i32.wrap_i64 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -13505,9 +15841,10 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 i32.const 10 i32.add i32.ne @@ -13519,10 +15856,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.add - local.set $0 + local.get $2 + i64.const 1 + i64.add + local.set $2 br $for-loop|0 end end @@ -13541,19 +15878,19 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 + i64.const 0 + local.set $2 loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_u + local.get $2 + i64.const 100 + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -13567,9 +15904,10 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 i32.const 10 i32.add i32.ne @@ -13585,17 +15923,18 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - local.get $0 + local.get $2 + local.get $2 + i32.wrap_i64 i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -13609,9 +15948,10 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 i32.const 20 i32.add i32.ne @@ -13623,10 +15963,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.add - local.set $0 + local.get $2 + i64.const 1 + i64.add + local.set $2 br $for-loop|1 end end @@ -13665,13 +16005,13 @@ i32.store local.get $1 i32.load offset=8 - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=16 - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16 @@ -13689,39 +16029,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 19 + i32.const 25 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 + local.get $8 i32.const 0 i32.store - local.get $7 + local.get $8 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 + local.get $8 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 + local.get $8 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 + local.get $8 i32.const 0 i32.store offset=12 - local.get $6 - i32.const 268435455 + local.get $7 + i32.const 134217727 i32.gt_u if i32.const 1456 @@ -13733,80 +16073,78 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $6 - local.get $6 + local.get $7 + local.get $7 i32.const 8 i32.le_u select - i32.const 2 + i32.const 3 i32.shl - local.tee $0 + local.tee $9 i32.const 1 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $4 i32.store offset=12 - local.get $7 local.get $8 + local.get $4 i32.store - local.get $7 local.get $8 + local.get $4 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 local.get $8 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 - local.get $0 + local.get $8 + local.get $9 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 + local.get $8 local.get $7 - local.get $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - i32.const 0 - local.set $0 loop $for-loop|00 local.get $3 - local.get $6 + local.get $7 i32.lt_s if - local.get $5 + local.get $6 local.get $3 - i32.const 12 - i32.mul + i32.const 4 + i32.shl i32.add - local.tee $8 - i32.load offset=8 + local.tee $4 + i32.load offset=12 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store - local.get $7 - local.get $0 local.get $8 - i32.load - call $~lib/array/Array#__set + local.get $0 + local.get $4 + i64.load + call $~lib/array/Array#__set local.get $0 i32.const 1 i32.add @@ -13820,23 +16158,23 @@ end end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store - local.get $7 + local.get $8 local.get $0 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 - call $"~lib/map/Map#values" + call $"~lib/map/Map#values" local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -13856,7 +16194,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 20 + i32.const 26 call $~lib/rt/itcms/__new local.tee $4 i32.store @@ -13884,7 +16222,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=4 - i32.const 48 + i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 global.get $~lib/memory/__stack_pointer @@ -13922,253 +16260,81 @@ i32.store offset=16 global.get $~lib/memory/__stack_pointer call $"~lib/map/Map#constructor" - local.tee $3 + local.tee $5 i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $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.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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.set $3 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s + if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $3 + local.get $8 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1568 + i32.const 1248 + i32.const 1728 + i32.const 114 i32.const 42 - i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" + local.get $8 + i32.store + local.get $8 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + 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 $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u - if + local.get $3 + call $~lib/array/Array#__get + local.set $6 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" + i32.eqz if i32.const 0 i32.const 1568 - i32.const 50 + i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable @@ -14177,946 +16343,766 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" + 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 52 + i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" + local.get $4 + local.get $2 + local.get $2 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=4 - local.get $1 - local.get $0 - 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 $0 + local.get $5 + local.get $6 + i32.const 20 + i32.sub + local.tee $6 + local.get $6 + call $"~lib/map/Map#set" + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|4 + local.set $3 + br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=4 - local.get $1 + local.get $4 call $"~lib/map/Map#get:size" - i32.const 50 + i32.const 100 i32.ne if i32.const 0 i32.const 1568 - i32.const 56 + i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=4 - local.get $1 + local.get $5 call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if i32.const 0 i32.const 1568 - i32.const 60 + i32.const 37 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 - return - end - i32.const 34688 - i32.const 34736 - 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) - (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end + i64.const 0 + local.set $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_u if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|3 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/map/Map#has" (param $0 i32) (param $1 i64) (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $8 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 i32.ne if - local.get $8 - 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 $2 + loop $for-loop|4 + local.get $2 + i64.const 50 + i64.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - local.get $8 - i64.load - local.tee $6 - i64.store + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - local.get $8 - i32.load offset=8 - i32.store offset=8 local.get $2 - local.get $7 - local.get $1 - local.get $6 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $6 - i64.const 32 - i64.shr_u i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - i32.and - i32.const 2 - i32.shl + i32.const 10 i32.add - local.tee $9 - i32.load - i32.store offset=12 - local.get $9 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - i32.const 16 - i32.add + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 $2 + i64.const 1 + i64.add local.set $2 + br $for-loop|4 end - local.get $8 - i32.const 16 - i32.add - local.set $8 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $0 - local.get $7 - i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~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 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store offset=8 - else global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 24 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $1 i32.store - local.get $0 - i32.load offset=16 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 local.get $0 - i32.load offset=12 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 local.get $0 - i32.load offset=4 - else + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl i32.const 1 - i32.or + i32.add + local.set $0 + br $for-loop|1 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - 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 + call $"~lib/map/Map#get:size" + 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.get $0 - i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $2 - 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 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~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 1896 i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 268435455 + i32.gt_u if - i32.const 1248 + i32.const 1456 i32.const 1728 - i32.const 130 - i32.const 22 + i32.const 70 + i32.const 60 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 i32.const 1 - call $~lib/array/ensureCapacity + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $0 - local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~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 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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 - i32.const 3 - i32.const 0 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - ) - (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=16 - local.tee $0 - call $~lib/array/Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - local.tee $4 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz + local.get $6 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store local.get $5 - local.get $1 - local.get $4 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 i32.load offset=8 - call $~lib/array/Array#__set - local.get $1 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + 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 $1 + local.set $3 + br $for-loop|00 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 $5 - i32.store - local.get $5 - local.get $1 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (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 - block $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~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 1896 i32.lt_s @@ -15128,170 +17114,89 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 0 - i32.store + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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.const 12 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 + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $8 - 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$1403" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $3 - i64.load - i64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1403" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end + i32.store offset=20 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - end - local.get $3 - if - local.get $3 + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length local.get $2 - i64.store offset=8 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=4 - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15299,258 +17204,320 @@ i32.lt_s br_if $folding-inner1 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 0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.get $7 i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 + local.get $7 + i32.store + local.get $7 + i32.load offset=4 + local.get $2 + i32.const 2 i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=4 + i32.add + i32.load + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $11 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $11 + i32.store offset=4 local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add + local.get $2 + call $~lib/array/Array#__get local.set $6 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $6 - local.get $11 - i32.ne - if - local.get $11 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $11 - i64.load - local.tee $9 - i64.store - local.get $3 - local.get $11 - i64.load offset=8 - i64.store offset=8 - local.get $3 - local.get $10 - local.get $5 - local.get $9 - 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 $9 - 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 $12 - local.get $12 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $12 - local.get $12 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $12 - local.get $12 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $12 - i32.load - i32.store offset=16 - local.get $12 - local.get $3 - i32.store - local.get $3 - i32.const 24 - i32.add - local.set $3 - end - local.get $11 - i32.const 24 - i32.add - local.set $11 - br $while-continue|00 - end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + 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 $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + 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 global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $10 - i32.store + call $"~lib/map/Map#get" local.get $0 - local.get $10 - call $~lib/rt/itcms/__link + 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 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $4 - i32.store offset=8 + 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 $0 - local.get $4 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $7 - i32.store offset=12 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + 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 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=12 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + 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 $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 24 - i32.mul - i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $8 - 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 $3 - i32.store end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -15562,245 +17529,16 @@ call $~lib/builtins/abort unreachable ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i64) - (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $"~lib/map/Map#find" - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#clear" (param $0 i32) - (local $1 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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/map/testNumeric" + (func $"std/map/testNumeric" (local $0 i32) (local $1 i32) - (local $2 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) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -15831,7 +17569,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 21 + i32.const 15 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -15859,7 +17597,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - i32.const 64 + i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 global.get $~lib/memory/__stack_pointer @@ -15896,16 +17634,16 @@ local.get $1 i32.store loop $for-loop|0 - local.get $2 - i64.const 100 - i64.lt_s + local.get $0 + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -15918,18 +17656,17 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - local.get $2 - i32.wrap_i64 + local.get $0 + local.get $0 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -15943,10 +17680,9 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - i32.wrap_i64 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 10 i32.add i32.ne @@ -15958,10 +17694,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|0 end end @@ -15980,19 +17716,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - i64.const 100 - i64.lt_s + local.get $0 + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16006,10 +17742,9 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - i32.wrap_i64 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 10 i32.add i32.ne @@ -16025,18 +17760,17 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - local.get $2 - i32.wrap_i64 + local.get $0 + local.get $0 i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16050,10 +17784,9 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - i32.wrap_i64 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 20 i32.add i32.ne @@ -16065,10 +17798,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|1 end end @@ -16107,13 +17840,13 @@ i32.store local.get $1 i32.load offset=8 - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=16 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16 @@ -16131,39 +17864,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 22 + i32.const 16 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 i32.const 0 i32.store - local.get $8 + local.get $7 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 i32.const 0 i32.store offset=12 - local.get $7 - i32.const 134217727 + local.get $6 + i32.const 536870910 i32.gt_u if i32.const 1456 @@ -16175,78 +17908,80 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $7 - local.get $7 + local.get $6 + local.get $6 i32.const 8 i32.le_u select - i32.const 3 + i32.const 1 i32.shl - local.tee $9 + local.tee $0 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $8 i32.store offset=12 + local.get $7 local.get $8 - local.get $4 i32.store + local.get $7 local.get $8 - local.get $4 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 + local.get $7 local.get $8 - local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 - local.get $9 + local.get $7 + local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 local.get $7 + local.get $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 + i32.const 0 + local.set $0 loop $for-loop|00 local.get $3 - local.get $7 + local.get $6 i32.lt_s if - local.get $6 + local.get $5 local.get $3 - i32.const 4 - i32.shl + i32.const 12 + i32.mul i32.add - local.tee $4 - i32.load offset=12 + local.tee $8 + i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 local.get $0 - local.get $4 - i64.load - call $~lib/array/Array#__set + local.get $8 + i32.load16_u + call $~lib/array/Array#__set local.get $0 i32.const 1 i32.add @@ -16260,23 +17995,23 @@ end end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 local.get $0 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 - call $"~lib/map/Map#values" + call $"~lib/map/Map#values" local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -16296,7 +18031,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 23 + i32.const 17 call $~lib/rt/itcms/__new local.tee $4 i32.store @@ -16324,7 +18059,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=4 - i32.const 96 + i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 global.get $~lib/memory/__stack_pointer @@ -16362,21 +18097,19 @@ i32.store offset=16 global.get $~lib/memory/__stack_pointer call $"~lib/map/Map#constructor" - local.tee $5 + local.tee $3 i32.store offset=20 - i32.const 0 - local.set $3 loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 call $~lib/array/Array#get:length - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -16390,10 +18123,10 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $3 - local.get $8 + local.get $2 + local.get $7 i32.load offset=12 i32.ge_u if @@ -16405,16 +18138,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.load offset=4 - local.get $3 - i32.const 3 + local.get $2 + i32.const 1 i32.shl i32.add - i64.load - local.set $2 + i32.load16_u + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -16423,15 +18156,15 @@ local.get $0 i32.store offset=4 local.get $0 - local.get $3 + local.get $2 call $~lib/array/Array#__get local.set $6 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $5 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16448,8 +18181,7 @@ local.get $6 i32.const 20 i32.sub - i64.extend_i32_s - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16463,23 +18195,23 @@ local.get $4 i32.store offset=4 local.get $4 - local.get $2 - local.get $2 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer local.get $5 - i32.store offset=4 local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $6 i32.const 20 i32.sub - local.tee $6 - local.get $6 + local.tee $5 + local.get $5 call $"~lib/map/Map#set" - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|2 end end @@ -16499,9 +18231,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store offset=4 - local.get $5 + local.get $3 call $"~lib/map/Map#get:size" i32.const 100 i32.ne @@ -16513,19 +18245,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i64.const 50 - i64.lt_s + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16539,10 +18271,9 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - i32.wrap_i64 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 20 i32.add i32.ne @@ -16558,14 +18289,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#delete" + local.get $0 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -16574,10 +18305,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|3 end end @@ -16596,19 +18327,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 + i32.const 0 + local.set $0 loop $for-loop|4 - local.get $2 - i64.const 50 - i64.lt_s + local.get $0 + i32.const 50 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -16621,18 +18352,17 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - local.get $2 - i32.wrap_i64 + local.get $0 + local.get $0 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16646,14 +18376,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#delete" + local.get $0 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -16662,10 +18392,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|4 end end @@ -16676,699 +18406,533 @@ call $"~lib/map/Map#get:size" i32.const 50 i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - 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) - (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end - 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/map/Map#has" (param $0 i32) (param $1 i64) (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (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 i32) - (local $6 i64) + (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $8 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~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 1896 + i32.lt_s + br_if $folding-inner1 + 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 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 i32.ne if - local.get $8 - i32.load offset=12 - 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 - i64.load - local.tee $6 - i64.store - local.get $2 - local.get $8 - i32.load offset=8 - i32.store offset=8 - local.get $2 - local.get $7 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $6 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 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.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - i32.and - i32.const 2 - i32.shl + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 i32.add - local.tee $9 - i32.load - i32.store offset=12 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 16 + i32.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 16 - i32.add - local.set $8 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $0 - local.get $7 - i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 + local.get $1 + 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 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~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 1896 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 + call $~lib/rt/itcms/__new + local.tee $8 i32.store offset=8 - else global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 + local.get $7 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 local.get $3 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s + local.get $6 i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 i32.const 1 - i32.shl + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load8_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 i32.const 1 - i32.or + i32.add + local.set $3 + br $for-loop|00 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $7 local.get $0 - i32.store + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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.const 8 i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 + global.set $~lib/memory/__stack_pointer + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add + local.get $1 + call $"~lib/map/Map#values" 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 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - 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 - 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 i64) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (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 - block $folding-inner1 + global.get $~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 1896 i32.lt_s @@ -17380,170 +18944,89 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 24 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + local.get $4 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 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 + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $8 - 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$1408" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $3 - i64.load - i64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1408" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end + i32.store offset=20 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - end - local.get $3 - if - local.get $3 + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length local.get $2 - i64.store offset=8 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=4 - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17551,419 +19034,330 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.add + i32.load8_s + local.set $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.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 local.get $5 + call $"~lib/map/Map#set" + local.get $2 i32.const 1 i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 - i32.store + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + 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 $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $3 - 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 $4 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + local.get $1 local.get $0 - i32.load offset=8 - local.set $11 + 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 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 - local.get $11 + call $"~lib/map/Map#get" local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul + i32.const 20 i32.add - local.set $6 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $6 - local.get $11 - i32.ne - if - local.get $11 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $11 - i64.load - local.tee $9 - i64.store - local.get $3 - local.get $11 - i64.load offset=8 - i64.store offset=8 - local.get $3 - local.get $10 - local.get $5 - local.get $9 - 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 $9 - 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 $12 - local.get $12 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $12 - local.get $12 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $12 - local.get $12 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $12 - i32.load - i32.store offset=16 - local.get $12 - local.get $3 - i32.store - local.get $3 - i32.const 24 - i32.add - local.set $3 - end - local.get $11 - i32.const 24 - i32.add - local.set $11 - br $while-continue|00 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $10 - i32.store + 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 $0 - local.get $10 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $4 - i32.store offset=8 local.get $0 - local.get $4 - call $~lib/rt/itcms/__link + i32.const 10 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 + 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 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=12 - local.get $0 + 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 $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 24 - i32.mul - i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $8 - 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 $3 - i32.store end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i64) - (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $"~lib/map/Map#find" - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $"~lib/map/Map#rehash" + i32.const 24 + 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 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"std/map/testNumeric" + (func $"std/map/testNumeric" (local $0 i32) (local $1 i32) (local $2 i64) @@ -18004,7 +19398,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 24 + i32.const 21 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -18071,14 +19465,14 @@ loop $for-loop|0 local.get $2 i64.const 100 - i64.lt_u + i64.lt_s if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -18096,13 +19490,13 @@ i32.wrap_i64 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18117,7 +19511,7 @@ i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $2 i32.wrap_i64 i32.const 10 @@ -18158,14 +19552,14 @@ loop $for-loop|1 local.get $2 i64.const 100 - i64.lt_u + i64.lt_s if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18180,7 +19574,7 @@ i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $2 i32.wrap_i64 i32.const 10 @@ -18203,13 +19597,13 @@ i32.wrap_i64 i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18224,7 +19618,7 @@ i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $2 i32.wrap_i64 i32.const 20 @@ -18304,7 +19698,7 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 25 + i32.const 22 call $~lib/rt/itcms/__new local.tee $8 i32.store @@ -18469,7 +19863,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 26 + i32.const 23 call $~lib/rt/itcms/__new local.tee $4 i32.store @@ -18604,7 +19998,7 @@ i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18622,7 +20016,7 @@ i32.const 20 i32.sub i64.extend_i32_s - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18638,7 +20032,7 @@ local.get $4 local.get $2 local.get $2 - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 @@ -18650,986 +20044,497 @@ local.get $6 call $"~lib/map/Map#set" local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $"~lib/map/Map#get:size" - 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 $2 - loop $for-loop|3 - local.get $2 - i64.const 50 - i64.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - 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 $2 - i64.const 1 - i64.add - local.set $2 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - 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 $2 - loop $for-loop|4 - local.get $2 - i64.const 50 - i64.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - local.get $2 - i32.wrap_i64 - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - 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 $2 - i64.const 1 - i64.add - local.set $2 - br $for-loop|4 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=4 - local.get $1 + local.get $4 call $"~lib/map/Map#get:size" - i32.const 50 + i32.const 100 i32.ne if i32.const 0 i32.const 1568 - i32.const 56 + i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=4 - local.get $1 + local.get $5 call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if i32.const 0 i32.const 1568 - i32.const 60 + i32.const 37 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 - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 f32) (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - f32.load - f32.eq - end - if - 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/map/Map#has" (param $0 i32) (param $1 f32) (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $8 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i64.const 0 + local.set $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - local.get $8 - f32.load - local.tee $4 - f32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - local.get $8 - i32.load offset=4 + call $"~lib/map/Map#get" + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 local.get $2 - local.get $7 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - local.get $4 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - local.get $9 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - local.get $9 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - local.get $9 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=8 - local.get $9 local.get $2 - i32.store + 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 $2 - i32.const 12 - i32.add + i64.const 1 + i64.add local.set $2 + br $for-loop|3 end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $0 - local.get $7 - i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - local.get $0 - i32.load offset=12 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + 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) + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|4 + local.get $2 + i64.const 50 + i64.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=4 - else + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.get $1 + local.get $2 + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|4 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + 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 $0 + 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 $1 + call $"~lib/map/Map#clear" global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $2 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $2 - 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 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 f32) (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - 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 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"~lib/map/Map#keys" (param $0 i32) (result i32) + (func $"std/map/testNumeric" + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - 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 1896 i32.lt_s - br_if $folding-inner1 - 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 16 - i32.const 28 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 i32.const 0 - call $~lib/rt/itcms/__link + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 + call $"~lib/map/Map#constructor" + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 + local.get $1 + call $"~lib/map/Map#get:size" + 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 - i32.store offset=8 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 268435455 - i32.gt_u + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 + i32.const 1896 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=16 + local.tee $6 + call $~lib/array/Array#constructor + local.tee $2 i32.store offset=4 - loop $for-loop|0 - local.get $2 - local.get $5 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 i32.lt_s if + local.get $5 local.get $3 - local.get $2 i32.const 12 i32.mul i32.add @@ -19640,470 +20545,353 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $7 - f32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $2 i32.store + local.get $2 local.get $0 - local.get $6 - 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 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $0 - i32.const 1 - i32.add - local.tee $7 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $7 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 + local.get $7 + i32.load + call $~lib/array/Array#__set local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $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 - local.get $6 - i32.store - local.get $6 - local.get $1 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $8 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 - f32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $5 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.store offset=4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + local.set $6 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load offset=20 + local.get $3 + call $~lib/array/Array#__get + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.get $1 + local.get $6 + 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.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $1 + i32.store offset=4 + local.get $1 + local.get $7 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner0 - 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.get $9 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 - i32.store + 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 - local.get $3 - 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 + local.get $4 i32.store offset=4 + local.get $4 + local.get $6 + local.get $6 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $11 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $11 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul + local.get $5 + i32.store offset=4 + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $6 + local.get $6 + call $"~lib/map/Map#set" + local.get $3 + i32.const 1 i32.add - local.set $6 - local.get $4 local.set $3 - loop $while-continue|0 - local.get $6 - local.get $11 - i32.ne - if - local.get $11 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $11 - f32.load - local.tee $5 - f32.store - local.get $3 - local.get $11 - f32.load offset=4 - f32.store offset=4 - local.get $3 - local.get $10 - local.get $9 - local.get $5 - 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 $12 - local.get $12 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $12 - local.get $12 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $12 - local.get $12 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $12 - i32.load - i32.store offset=8 - local.get $12 - 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 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $"~lib/map/Map#get:size" + 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 $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + 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 global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $10 - i32.store + call $"~lib/map/Map#get" local.get $0 - local.get $10 - call $~lib/rt/itcms/__link + 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 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $4 - i32.store offset=8 + 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 $0 - local.get $4 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $7 - i32.store offset=12 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + 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 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=12 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + 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 $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - f32.store - local.get $3 - local.get $2 - f32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $8 - 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 12 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -20115,162 +20903,25 @@ call $~lib/builtins/abort unreachable ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 f32) - (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $"~lib/map/Map#find" - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 24 @@ -20283,7 +20934,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -20292,81 +20943,81 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 27 + i32.const 12 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=8 - local.get $0 - local.get $4 + local.get $1 + local.get $5 i32.store - local.get $0 - local.get $4 + local.get $1 + local.get $5 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=8 - local.get $0 - local.get $4 + local.get $1 + local.get $5 i32.store offset=8 - local.get $0 - local.get $4 + local.get $1 + local.get $5 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 4 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store loop $for-loop|0 - local.get $1 - f32.const 100 - f32.lt + local.get $0 + i32.const 100 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -20376,21 +21027,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + local.get $0 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -20401,13 +21051,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#get" + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 10 i32.add i32.ne @@ -20419,17 +21068,17 @@ call $~lib/builtins/abort unreachable end - local.get $1 - f32.const 1 - f32.add - local.set $1 + 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 $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 call $"~lib/map/Map#get:size" i32.const 100 i32.ne @@ -20441,19 +21090,19 @@ call $~lib/builtins/abort unreachable end - f32.const 0 - local.set $1 + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $1 - f32.const 100 - f32.lt + local.get $0 + i32.const 100 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -20464,13 +21113,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#get" + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 10 i32.add i32.ne @@ -20483,21 +21131,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + local.get $0 i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -20508,13 +21155,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#get" + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 20 i32.add i32.ne @@ -20526,43 +21172,221 @@ call $~lib/builtins/abort unreachable end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|1 + 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 $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 + local.get $1 + 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 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~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 1896 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 1 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load16_s + 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|00 end end global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 - i32.store offset=4 - local.get $0 - call $"~lib/map/Map#get:size" - 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.get $0 - i32.store offset=4 + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - local.get $0 - call $"~lib/map/Map#keys" - local.tee $4 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 call $"~lib/map/Map#values" - local.tee $3 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20572,7 +21396,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -20581,1184 +21405,761 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 29 + i32.const 14 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $7 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $5 i32.store offset=8 - local.get $6 - local.get $7 + local.get $4 + local.get $5 i32.store - local.get $6 - local.get $7 + local.get $4 + local.get $5 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - local.get $6 + local.get $4 i32.const 3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - i32.const 48 + i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $7 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $5 i32.store offset=8 - local.get $6 - local.get $7 + local.get $4 + local.get $5 i32.store offset=8 - local.get $6 - local.get $7 + local.get $4 + local.get $5 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - local.get $6 + local.get $4 i32.const 4 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - local.get $6 + local.get $4 i32.const 0 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - local.get $6 + local.get $4 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=16 global.get $~lib/memory/__stack_pointer call $"~lib/map/Map#constructor" - local.tee $5 + local.tee $3 i32.store offset=20 loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $2 - local.get $4 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $2 - call $~lib/array/Array#__get - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $7 - 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 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $1 - local.get $1 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $7 - local.get $7 - call $"~lib/map/Map#set" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $"~lib/map/Map#get:size" - 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 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=4 - local.get $0 - 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 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $"~lib/map/Map#get" - local.get $1 - i32.trunc_sat_f32_s - i32.const 20 - i32.add - i32.ne + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1568 + i32.const 1248 + i32.const 1728 + i32.const 114 i32.const 42 - i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $"~lib/map/Map#delete" + local.get $7 + i32.store + local.get $7 + i32.load offset=4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $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.get $0 i32.store offset=4 local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f32.const 50 - f32.lt - if + local.get $2 + call $~lib/array/Array#__get + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $5 + call $"~lib/map/Map#has" + i32.eqz if i32.const 0 i32.const 1568 - i32.const 50 + i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 local.get $1 - i32.trunc_sat_f32_s - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" i32.eqz if i32.const 0 i32.const 1568 - i32.const 52 + i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store offset=4 - local.get $0 - local.get $1 - call $"~lib/map/Map#delete" + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - local.get $0 - 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 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store offset=4 - local.get $0 + local.get $4 call $"~lib/map/Map#get:size" - i32.const 50 + i32.const 100 i32.ne if i32.const 0 i32.const 1568 - i32.const 56 + i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - local.get $0 + local.get $3 call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if i32.const 0 i32.const 1568 - i32.const 60 + i32.const 37 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 - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 f64) (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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + end + i32.const 0 + local.set $0 + loop $for-loop|3 local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $0 - f64.load - f64.eq - end - if + 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 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - return + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 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/map/Map#has" (param $0 i32) (param $1 f64) (result i32) - (local $2 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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - local.get $1 - 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 $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s 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 + global.get $~lib/memory/__stack_pointer 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 - i32.const 15 - i32.shr_u - local.get $10 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $10 - i32.const 13 - i32.shr_u - local.get $10 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $10 - i32.const 16 - i32.shr_u - local.get $10 - i32.xor - i32.and - i32.const 2 - i32.shl + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 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 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 + i32.const 1 i32.add - local.set $2 + local.set $0 + br $for-loop|4 end - local.get $9 - i32.const 16 - i32.add - local.set $9 - br $while-continue|0 end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $0 - local.get $8 - i32.store - local.get $0 - local.get $8 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 i32) - (local $3 i64) + (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) 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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - local.tee $5 - call $"~lib/map/Map#find" - local.tee $4 - if - local.get $4 - local.get $2 + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~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 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store offset=8 - else global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 30 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 local.get $0 + local.get $4 i32.store local.get $0 - i32.load offset=16 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 i32.store + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_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 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - i32.eq + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $4 - local.get $0 - i32.load offset=12 + i32.const 0 + i32.const 1568 + i32.const 11 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load offset=4 - else + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_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 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.get $1 + local.get $1 + i32.trunc_sat_f64_s + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_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 $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|1 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $6 - i32.const 4 - i32.shl - i32.add - local.tee $4 - local.get $1 - f64.store - local.get $4 - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $4 - local.get $2 - 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=12 - local.get $0 - local.get $4 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 f64) (result i32) - (local $2 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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.store - local.get $0 - local.get $1 - local.get $1 - 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 $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#keys" (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (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 - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + 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.get $0 - i32.store + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - local.set $3 + call $"~lib/map/Map#keys" + local.tee $4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=16 - local.set $5 + call $"~lib/map/Map#values" + local.tee $3 + i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 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 16 - i32.const 31 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - 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 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select - i32.const 3 - i32.shl - local.tee $0 - i32.const 1 + i32.const 24 + i32.const 32 call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 + local.tee $6 + i32.store global.get $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 - i32.store offset=12 + i32.store offset=8 local.get $6 local.get $7 i32.store @@ -21769,762 +22170,403 @@ local.get $6 i32.store offset=4 local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 + i32.const 3 i32.store offset=4 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - local.tee $7 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $7 - f64.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $0 - local.get $6 - 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 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $0 - i32.const 1 - i32.add - local.tee $7 - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $7 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - 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 $6 - i32.store - local.get $6 - local.get $1 - call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $6 - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 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 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.store offset=4 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $7 i32.store offset=8 + local.get $6 + local.get $7 + i32.store offset=8 + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - i32.store + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i64.reinterpret_f64 + call $"~lib/map/Map#constructor" 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 $10 - 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$1418" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $3 - f64.load - f64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1418" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end + i32.store offset=20 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - end - local.get $3 - if - local.get $3 + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array#get:length local.get $2 - f64.store offset=8 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store offset=4 - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $6 - 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 1896 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $4 + i32.store + local.get $2 + local.get $4 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $7 + 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 local.get $6 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $11 - i32.store + i32.store offset=4 + local.get $6 + local.get $1 + local.get $1 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $9 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.get $5 i32.store offset=4 + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $7 + local.get $7 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=8 - local.set $12 + 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 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $12 + i32.store offset=4 local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f64_s + i32.const 20 i32.add - local.set $8 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $8 - local.get $12 - i32.ne - if - local.get $12 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $12 - f64.load - local.tee $7 - f64.store - local.get $3 - local.get $12 - f64.load offset=8 - f64.store offset=8 - local.get $3 - local.get $11 - local.get $6 - local.get $7 - 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 $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=16 - local.get $13 - local.get $3 - i32.store - local.get $3 - i32.const 24 - i32.add - local.set $3 - end - local.get $12 - i32.const 24 - i32.add - local.set $12 - br $while-continue|00 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store offset=12 local.get $0 - local.get $11 - i32.store + i32.store offset=4 local.get $0 - local.get $11 - call $~lib/rt/itcms/__link + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + 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 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $1 + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 24 - i32.mul - i32.add - local.tee $3 - local.get $1 - f64.store - local.get $3 - local.get $2 - f64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $10 - 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 $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 f64) - (local $2 i64) - (local $3 i32) - (local $4 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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - 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 $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - call $"~lib/map/Map#find" - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $4 - local.get $4 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + end + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=20 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 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 + call $"~lib/map/Map#clear" global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - local.get $3 - call $"~lib/map/Map#rehash" + call $"~lib/map/Map#get:size" + 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 24 + 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 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"std/map/testNumeric" + (func $"std/map/testNumeric" (local $0 i32) - (local $1 f64) + (local $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22561,7 +22603,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 30 + i32.const 27 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -22589,7 +22631,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 64 + i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 global.get $~lib/memory/__stack_pointer @@ -22627,15 +22669,15 @@ i32.store loop $for-loop|0 local.get $1 - f64.const 100 - f64.lt + f32.const 100 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -22650,16 +22692,16 @@ local.get $0 local.get $1 local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -22674,9 +22716,9 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 10 i32.add i32.ne @@ -22689,8 +22731,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|0 end @@ -22710,19 +22752,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|1 local.get $1 - f64.const 100 - f64.lt + f32.const 100 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -22737,9 +22779,9 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 10 i32.add i32.ne @@ -22757,16 +22799,16 @@ local.get $0 local.get $1 local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -22781,9 +22823,9 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 20 i32.add i32.ne @@ -22796,8 +22838,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|1 end @@ -22822,7 +22864,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#keys" + call $"~lib/map/Map#keys" local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -22830,7 +22872,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#values" + call $"~lib/map/Map#values" local.tee $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -22850,7 +22892,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 32 + i32.const 29 call $~lib/rt/itcms/__new local.tee $6 i32.store @@ -22878,7 +22920,7 @@ global.get $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 - i32.const 96 + i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $7 global.get $~lib/memory/__stack_pointer @@ -22962,10 +23004,10 @@ local.get $4 i32.load offset=4 local.get $2 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + f32.load local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22983,7 +23025,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -23000,8 +23042,8 @@ local.get $7 i32.const 20 i32.sub - f64.convert_i32_s - call $"~lib/map/Map#has" + f32.convert_i32_s + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -23017,7 +23059,7 @@ local.get $6 local.get $1 local.get $1 - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 @@ -23065,19 +23107,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|3 local.get $1 - f64.const 50 - f64.lt + f32.const 50 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -23092,9 +23134,9 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 20 i32.add i32.ne @@ -23111,13 +23153,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#delete" + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -23127,8 +23169,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|3 end @@ -23148,19 +23190,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|4 local.get $1 - f64.const 50 - f64.lt + f32.const 50 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -23175,16 +23217,16 @@ local.get $0 local.get $1 local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -23199,13 +23241,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#delete" + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -23215,8 +23257,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|4 end @@ -23240,7 +23282,7 @@ local.get $0 i32.store offset=4 local.get $0 - call $"~lib/map/Map#clear" + call $"~lib/map/Map#clear" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 @@ -23267,46 +23309,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/arraybuffer/ArrayBuffer#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 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - 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.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1504 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - 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 - ) ) diff --git a/tests/compiler/std/math.release.wat b/tests/compiler/std/math.release.wat index 5b4a0871d0..99f49dfb63 100644 --- a/tests/compiler/std/math.release.wat +++ b/tests/compiler/std/math.release.wat @@ -6,19 +6,18 @@ (type $4 (func (param f64 f64) (result f64))) (type $5 (func (param f32 f32) (result f32))) (type $6 (func (param f64 f64 f64 f64) (result i32))) - (type $7 (func (result f64))) - (type $8 (func (param f64 f64) (result i32))) - (type $9 (func (param f32 f32) (result i32))) + (type $7 (func (param f64 f64) (result i32))) + (type $8 (func (param f32 f32) (result i32))) + (type $9 (func (result f64))) (type $10 (func)) - (type $11 (func (param f64 i32) (result f64))) - (type $12 (func (param i32 i32 i32 i32))) - (type $13 (func (param i64) (result i32))) + (type $11 (func (param i32 i32 i32 i32))) + (type $12 (func (param f64 i32) (result f64))) + (type $13 (func (param i64 i64) (result i64))) (type $14 (func (param f32 f32 f32 f32) (result i32))) - (type $15 (func (param i64))) - (type $16 (func (param f64 f64 i32) (result f64))) - (type $17 (func (param f64))) - (type $18 (func (param i64 i64 i64 i64 i64))) - (type $19 (func (param i64 i64) (result i64))) + (type $15 (func (param f64))) + (type $16 (func (param i64) (result i32))) + (type $17 (func (param i64))) + (type $18 (func (param f64 f64 i32) (result f64))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) (import "env" "Math.LN2" (global $~lib/bindings/dom/Math.LN2 f64)) (import "env" "Math.LN10" (global $~lib/bindings/dom/Math.LN10 f64)) @@ -27,38 +26,38 @@ (import "env" "Math.SQRT1_2" (global $~lib/bindings/dom/Math.SQRT1_2 f64)) (import "env" "Math.SQRT2" (global $~lib/bindings/dom/Math.SQRT2 f64)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) - (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) - (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) - (import "env" "Math.asin" (func $~lib/bindings/dom/Math.asin (param f64) (result f64))) - (import "env" "Math.asinh" (func $~lib/bindings/dom/Math.asinh (param f64) (result f64))) - (import "env" "Math.atan" (func $~lib/bindings/dom/Math.atan (param f64) (result f64))) - (import "env" "Math.atanh" (func $~lib/bindings/dom/Math.atanh (param f64) (result f64))) - (import "env" "Math.atan2" (func $~lib/bindings/dom/Math.atan2 (param f64 f64) (result f64))) - (import "env" "Math.cbrt" (func $~lib/bindings/dom/Math.cbrt (param f64) (result f64))) - (import "env" "Math.ceil" (func $~lib/bindings/dom/Math.ceil (param f64) (result f64))) (import "env" "Math.cos" (func $~lib/bindings/dom/Math.cos (param f64) (result f64))) - (import "env" "Math.cosh" (func $~lib/bindings/dom/Math.cosh (param f64) (result f64))) + (import "env" "Math.sqrt" (func $~lib/bindings/dom/Math.sqrt (param f64) (result f64))) + (import "env" "Math.tan" (func $~lib/bindings/dom/Math.tan (param f64) (result f64))) + (import "env" "Math.ceil" (func $~lib/bindings/dom/Math.ceil (param f64) (result f64))) + (import "env" "Math.sin" (func $~lib/bindings/dom/Math.sin (param f64) (result f64))) (import "env" "Math.exp" (func $~lib/bindings/dom/Math.exp (param f64) (result f64))) - (import "env" "Math.expm1" (func $~lib/bindings/dom/Math.expm1 (param f64) (result f64))) - (import "env" "Math.pow" (func $~lib/bindings/dom/Math.pow (param f64 f64) (result f64))) + (import "env" "Math.trunc" (func $~lib/bindings/dom/Math.trunc (param f64) (result f64))) (import "env" "Math.floor" (func $~lib/bindings/dom/Math.floor (param f64) (result f64))) - (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) - (import "env" "Math.log10" (func $~lib/bindings/dom/Math.log10 (param f64) (result f64))) - (import "env" "Math.log1p" (func $~lib/bindings/dom/Math.log1p (param f64) (result f64))) + (import "env" "Math.asin" (func $~lib/bindings/dom/Math.asin (param f64) (result f64))) + (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) + (import "env" "Math.expm1" (func $~lib/bindings/dom/Math.expm1 (param f64) (result f64))) (import "env" "Math.log2" (func $~lib/bindings/dom/Math.log2 (param f64) (result f64))) - (import "env" "Math.max" (func $~lib/bindings/dom/Math.max (param f64 f64) (result f64))) - (import "env" "Math.min" (func $~lib/bindings/dom/Math.min (param f64 f64) (result f64))) - (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) - (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) + (import "env" "Math.log1p" (func $~lib/bindings/dom/Math.log1p (param f64) (result f64))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Math.atan" (func $~lib/bindings/dom/Math.atan (param f64) (result f64))) + (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) - (import "env" "Math.sign" (func $~lib/bindings/dom/Math.sign (param f64) (result f64))) - (import "env" "Math.sin" (func $~lib/bindings/dom/Math.sin (param f64) (result f64))) - (import "env" "Math.sinh" (func $~lib/bindings/dom/Math.sinh (param f64) (result f64))) - (import "env" "Math.sqrt" (func $~lib/bindings/dom/Math.sqrt (param f64) (result f64))) - (import "env" "Math.tan" (func $~lib/bindings/dom/Math.tan (param f64) (result f64))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) + (import "env" "Math.pow" (func $~lib/bindings/dom/Math.pow (param f64 f64) (result f64))) (import "env" "Math.tanh" (func $~lib/bindings/dom/Math.tanh (param f64) (result f64))) - (import "env" "Math.trunc" (func $~lib/bindings/dom/Math.trunc (param f64) (result f64))) + (import "env" "Math.sinh" (func $~lib/bindings/dom/Math.sinh (param f64) (result f64))) + (import "env" "Math.sign" (func $~lib/bindings/dom/Math.sign (param f64) (result f64))) + (import "env" "Math.min" (func $~lib/bindings/dom/Math.min (param f64 f64) (result f64))) + (import "env" "Math.max" (func $~lib/bindings/dom/Math.max (param f64 f64) (result f64))) + (import "env" "Math.log10" (func $~lib/bindings/dom/Math.log10 (param f64) (result f64))) + (import "env" "Math.cosh" (func $~lib/bindings/dom/Math.cosh (param f64) (result f64))) + (import "env" "Math.cbrt" (func $~lib/bindings/dom/Math.cbrt (param f64) (result f64))) + (import "env" "Math.atanh" (func $~lib/bindings/dom/Math.atanh (param f64) (result f64))) + (import "env" "Math.atan2" (func $~lib/bindings/dom/Math.atan2 (param f64 f64) (result f64))) + (import "env" "Math.asinh" (func $~lib/bindings/dom/Math.asinh (param f64) (result f64))) + (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) + (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) (global $~lib/math/res128_hi (mut i64) (i64.const 0)) @@ -69,8 +68,6 @@ (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) - (global $~lib/math/NativeMath.sincos_sin (mut f64) (f64.const 0)) - (global $~lib/math/NativeMath.sincos_cos (mut f64) (f64.const 0)) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") @@ -215,83 +212,6 @@ (data $11.128 (i32.const 14353) "`Y\df\bd\d5\d5?\dce\a4\08*\0b\n\bd") (export "memory" (memory $0)) (start $~start) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - local.get $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $0 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - i32.gt_s - if (result f64) - i32.const 1023 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - local.get $1 - i32.const 1023 - i32.ge_s - select - local.set $1 - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - local.set $0 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - i32.lt_s - if (result f64) - i32.const -1022 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - local.get $1 - i32.const -1022 - i32.le_s - select - local.set $1 - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul - ) (func $std/math/check (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 i32) local.get $0 @@ -555,4350 +475,5123 @@ end i32.const 1 ) - (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) - (local $1 i32) + (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1072693248 - i32.ge_u + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) + local.get $1 + f32.abs + f32.const 2 + f32.le if - local.get $3 - i32.wrap_i64 local.get $1 - i32.const 1072693248 + f32.const 2 + f32.eq + if + local.get $0 + local.get $0 + f32.mul + return + end + local.get $1 + f32.const 0.5 + f32.eq + if + local.get $0 + f32.sqrt + f32.abs + f32.const inf + local.get $0 + f32.const -inf + f32.ne + select + return + end + local.get $1 + f32.const -1 + f32.eq + if + f32.const 1 + local.get $0 + f32.div + return + end + local.get $1 + f32.const 1 + f32.eq + if + local.get $0 + return + end + local.get $1 + f32.const 0 + f32.eq + if + f32.const 1 + return + end + end + block $~lib/util/math/powf_lut|inlined.0 (result f32) + local.get $1 + i32.reinterpret_f32 + local.tee $8 + i32.const 1 + i32.shl + local.tee $6 + i32.const 1 + i32.sub + i32.const -16777217 + i32.ge_u + local.tee $7 + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 8388608 i32.sub + i32.const 2130706432 + i32.ge_u i32.or - i32.eqz if + local.get $7 + if + f32.const 1 + local.get $6 + i32.eqz + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const nan:0x400000 + local.get $2 + i32.const 1065353216 + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + drop + local.get $0 + local.get $1 + f32.add + local.get $6 + i32.const -16777216 + i32.gt_u + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + i32.const -16777216 + i32.gt_u + i32.or + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const nan:0x400000 + local.get $2 + i32.const 2130706432 + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const 0 + local.get $8 + i32.const 31 + i32.shr_u + i32.eqz + local.get $2 + i32.const 2130706432 + i32.lt_u + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + drop + local.get $1 + local.get $1 + f32.mul + 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 $0 + local.get $0 + f32.mul + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 31 + i32.shr_u + if (result i32) + block $~lib/util/math/checkintf|inlined.0 (result i32) + i32.const 0 + local.get $8 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $2 + i32.const 127 + i32.lt_u + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 2 + local.get $2 + i32.const 150 + i32.gt_u + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 0 + local.get $8 + i32.const 1 + i32.const 150 + local.get $2 + i32.sub + i32.shl + local.tee $2 + i32.const 1 + i32.sub + i32.and + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 1 + local.get $2 + local.get $8 + i32.and + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 2 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + select + local.tee $0 + f32.div + local.get $0 + local.get $8 + i32.const 0 + i32.lt_s + select + br $~lib/util/math/powf_lut|inlined.0 + end local.get $2 i32.const 0 i32.lt_s if - f64.const 3.141592653589793 - return + block $~lib/util/math/checkintf|inlined.1 (result i32) + i32.const 0 + local.get $8 + 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.1 + drop + i32.const 2 + local.get $4 + i32.const 150 + i32.gt_u + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 0 + local.get $8 + 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.1 + drop + i32.const 1 + local.get $4 + local.get $8 + i32.and + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 2 + end + local.tee $4 + i32.eqz + if + local.get $0 + local.get $0 + f32.sub + local.tee $0 + local.get $0 + f32.div + br $~lib/util/math/powf_lut|inlined.0 + end + i32.const 65536 + i32.const 0 + local.get $4 + i32.const 1 + i32.eq + select + local.set $4 + local.get $2 + i32.const 2147483647 + i32.and + local.set $2 + end + local.get $2 + i32.const 8388608 + i32.lt_u + if + local.get $0 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + i32.const 192937984 + i32.sub + local.set $2 end - f64.const 0 - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $1 - i32.const 1071644672 - i32.lt_u - if - local.get $1 - i32.const 1012924416 - i32.le_u - if - f64.const 1.5707963267948966 - return end - f64.const 1.5707963267948966 - local.get $0 - f64.const 6.123233995736766e-17 - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 3.479331075960212e-05 + local.get $2 + local.get $2 + i32.const 1060306944 + i32.sub + local.tee $2 + i32.const -8388608 + i32.and + local.tee $6 + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $2 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 10016 + i32.add + local.tee $2 + f64.load f64.mul - f64.const 7.915349942898145e-04 + f64.const -1 f64.add + local.tee $3 + local.get $3 f64.mul - f64.const -0.04005553450067941 - f64.add + local.set $9 + local.get $1 + f64.promote_f32 + local.get $3 + f64.const 0.288457581109214 f64.mul - f64.const 0.20121253213486293 + f64.const -0.36092606229713164 f64.add + local.get $9 + local.get $9 f64.mul - f64.const -0.3255658186224009 - f64.add f64.mul - f64.const 0.16666666666666666 + local.get $3 + f64.const 1.4426950408774342 + f64.mul + local.get $2 + f64.load offset=8 + local.get $6 + i32.const 23 + i32.shr_s + f64.convert_i32_s + f64.add f64.add + local.get $3 + f64.const 0.480898481472577 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.const -0.7213474675006291 f64.add + local.get $9 f64.mul - f64.const 2.0209457602335057 + f64.add f64.add f64.mul - f64.const -2.403394911734414 + local.tee $3 + i64.reinterpret_f64 + i64.const 47 + i64.shr_u + i64.const 65535 + i64.and + i64.const 32959 + i64.ge_u + if + f32.const -inf + f32.const inf + local.get $4 + select + local.get $3 + f64.const 127.99999995700433 + f64.gt + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const -0 + f32.const 0 + local.get $4 + select + local.get $3 + f64.const -150 + f64.le + br_if $~lib/util/math/powf_lut|inlined.0 + drop + end + local.get $3 + f64.const 211106232532992 + f64.add + local.tee $9 + i64.reinterpret_f64 + local.set $5 + local.get $3 + local.get $9 + f64.const -211106232532992 f64.add + f64.sub + local.tee $3 + f64.const 0.6931471806916203 f64.mul f64.const 1 f64.add - f64.div + local.get $3 + f64.const 0.05550361559341535 + f64.mul + f64.const 0.2402284522445722 + f64.add + local.get $3 + local.get $3 + f64.mul + f64.mul + f64.add + local.get $5 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $5 + local.get $4 + i64.extend_i32_u + i64.add + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 + f64.mul + f32.demote_f64 + end + ) + (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $6 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1072243195 + i32.le_u + if + local.get $3 + i32.const 1044816030 + i32.lt_u + if + f64.const 1 + return + end + local.get $0 + local.get $0 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + f64.const 1 + local.get $1 + f64.const 0.5 f64.mul + local.tee $7 + f64.sub + local.tee $8 + f64.const 1 + local.get $8 f64.sub + local.get $7 f64.sub + local.get $1 + local.get $1 + local.get $1 + local.get $1 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul + local.get $2 + local.get $2 + f64.mul + local.get $1 + local.get $1 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul + local.get $0 + f64.const 0 + f64.mul f64.sub + f64.add + f64.add return end - local.get $2 - i32.const 0 - i32.lt_s + local.get $3 + i32.const 2146435072 + i32.ge_u if - f64.const 1.5707963267948966 local.get $0 - f64.const 0.5 + local.get $0 + f64.sub + return + end + block $~lib/math/rempio2|inlined.0 (result i32) + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $3 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $3 + local.get $4 + 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 $1 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const -1.5707963267341256 + f64.add + local.set $0 + local.get $4 + 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 $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const -2.0222662487959506e-21 + f64.add + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + local.get $3 + br $~lib/math/rempio2|inlined.0 + end + local.get $4 + i32.const 1094263291 + i32.lt_u + if + local.get $4 + i32.const 20 + i32.shr_u + local.tee $3 + local.get $0 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $7 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 + local.get $7 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 16 + i32.gt_u + if + local.get $7 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $3 + local.get $0 + local.get $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $7 + f64.const 8.4784276603689e-32 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $0 + local.get $2 + f64.sub + local.set $1 + end + end + local.get $1 + global.set $~lib/math/rempio2_y0 + local.get $0 + local.get $1 + f64.sub + local.get $2 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $7 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.0 + end + i32.const 0 + local.get $5 + call $~lib/math/pio2_large_quot + local.tee $3 + i32.sub + local.get $3 + local.get $6 + select + end + local.set $3 + global.get $~lib/math/rempio2_y0 + local.set $1 + global.get $~lib/math/rempio2_y1 + local.set $2 + local.get $3 + i32.const 1 + i32.and + if (result f64) + local.get $1 + local.get $1 f64.mul - f64.const 0.5 - f64.add local.tee $0 - f64.sqrt - local.tee $4 + local.get $1 + f64.mul + local.set $7 + local.get $1 local.get $0 + local.get $2 + f64.const 0.5 + f64.mul + local.get $7 local.get $0 local.get $0 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add 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 + local.get $0 + f64.const 1.58969099521155e-10 f64.mul - f64.const 0.20121253213486293 + f64.const -2.5050760253406863e-08 f64.add f64.mul - f64.const -0.3255658186224009 f64.add f64.mul - f64.const 0.16666666666666666 - f64.add + f64.sub f64.mul + local.get $2 + f64.sub + local.get $7 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + else + local.get $1 + local.get $1 + f64.mul + local.tee $7 + local.get $7 + f64.mul + local.set $8 + f64.const 1 + local.get $7 + f64.const 0.5 + f64.mul + local.tee $0 + f64.sub + local.tee $9 + f64.const 1 + local.get $9 + f64.sub local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 0.07703815055590194 + f64.sub + local.get $7 + local.get $7 + local.get $7 + local.get $7 + f64.const 2.480158728947673e-05 f64.mul - f64.const -0.6882839716054533 + f64.const -0.001388888888887411 f64.add f64.mul - f64.const 2.0209457602335057 + f64.const 0.0416666666666666 f64.add f64.mul - f64.const -2.403394911734414 - f64.add + local.get $8 + local.get $8 f64.mul - f64.const 1 + local.get $7 + local.get $7 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 f64.add - f64.div - local.get $4 f64.mul - f64.const -6.123233995736766e-17 + f64.const -2.7557314351390663e-07 f64.add + f64.mul f64.add - f64.sub - f64.const 2 f64.mul - return + local.get $1 + local.get $2 + f64.mul + f64.sub + f64.add + f64.add end - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.sub - local.tee $4 - f64.sqrt - local.tee $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 local.tee $0 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - 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 $4 - local.get $4 - local.get $4 - local.get $4 - 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 $5 - f64.mul - local.get $4 - local.get $0 - local.get $0 - f64.mul - f64.sub - local.get $5 - local.get $0 - f64.add - f64.div - f64.add - f64.add - f64.const 2 - f64.mul - ) - (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f32) + f64.neg local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 2147483647 + local.get $3 + i32.const 1 + i32.add + i32.const 2 i32.and - local.tee $1 - i32.const 1065353216 - i32.ge_u - if - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 3.141592502593994 - f32.const 0 - local.get $2 - i32.const 0 - i32.lt_s - select - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $1 - i32.const 1056964608 - i32.lt_u - if - local.get $1 - i32.const 847249408 - i32.le_u - if - f32.const 1.570796251296997 - return - end - 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 - return - end - local.get $2 - i32.const 0 - i32.lt_s - 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 + select + ) + (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 f64) + (local $9 i64) + (local $10 i64) + block $__inlined_func$~lib/math/NativeMath.mod$2 (result f64) local.get $0 local.get $0 + f64.trunc + f64.sub 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 + f64.copysign + local.get $1 + f64.abs + f64.const 1 + f64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$2 + drop + local.get $1 + i64.reinterpret_f64 + local.tee $7 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $9 + local.get $7 + i64.const 1 + i64.shl + local.tee $5 + i64.eqz 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.add - f32.add - f32.sub - f32.const 2 - f32.mul - return - end - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.sub - local.tee $3 - f32.sqrt - local.tee $4 - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $0 - local.get $3 - local.get $3 - local.get $3 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul - local.get $3 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - local.get $4 - f32.mul - local.get $3 - local.get $0 - local.get $0 - f32.mul - f32.sub - local.get $4 - local.get $0 - f32.add - f32.div - f32.add - f32.add - f32.const 2 - f32.mul - ) - (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 i32) - (local $6 f64) - (local $7 f64) - i32.const 1 - local.set $2 - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 31 - i32.shr_u - local.get $5 - i32.const 1071284858 - i32.lt_u - i32.or - if - local.get $5 - i32.const -1074790400 - i32.ge_u + i64.reinterpret_f64 + local.tee $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $10 + i64.const 2047 + i64.eq + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if local.get $0 - f64.const -1 - f64.eq - if - local.get $0 - f64.const 0 - f64.div - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 + local.get $1 + f64.mul + local.tee $8 + local.get $8 f64.div - return + br $__inlined_func$~lib/math/NativeMath.mod$2 end + local.get $4 + i64.const 1 + i64.shl + local.tee $3 local.get $5 - i32.const 1 - i32.shl - i32.const 2034237440 - i32.lt_u + i64.le_u if local.get $0 - return + local.get $3 + local.get $5 + i64.ne + f64.convert_i32_u + f64.mul + br $__inlined_func$~lib/math/NativeMath.mod$2 end - local.get $5 - i32.const -1076707644 - i32.le_u - if (result f64) - i32.const 0 - local.set $2 - local.get $0 + local.get $4 + i64.const 63 + i64.shr_u + local.set $6 + local.get $10 + i64.eqz + if (result i64) + local.get $4 + i64.const 1 + local.get $10 + local.get $4 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $10 + i64.sub + i64.shl else - f64.const 0 + local.get $4 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or end - local.set $1 - else - local.get $5 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return + local.set $3 + local.get $9 + i64.eqz + if (result i64) + local.get $7 + i64.const 1 + local.get $9 + local.get $7 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $9 + i64.sub + i64.shl + else + local.get $7 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or end - end - local.get $2 - if - local.get $0 - f64.const 1 - f64.add - i64.reinterpret_f64 - local.tee $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 614242 - i32.add - local.tee $5 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.tee $2 - i32.const 54 - i32.lt_s - if (result f64) - f64.const 1 - local.get $3 - f64.reinterpret_i64 - local.tee $1 - local.get $0 - f64.sub - f64.sub + local.set $4 + loop $while-continue|0 + local.get $9 + local.get $10 + i64.lt_s + if + local.get $3 + local.get $4 + i64.ge_u + if (result i64) + local.get $0 + f64.const 0 + f64.mul + local.get $3 + local.get $4 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$2 + drop + local.get $3 + local.get $4 + i64.sub + else + local.get $3 + end + i64.const 1 + i64.shl + local.set $3 + local.get $10 + i64.const 1 + i64.sub + local.set $10 + br $while-continue|0 + end + end + local.get $3 + local.get $4 + i64.ge_u + if local.get $0 - local.get $1 - f64.const -1 - f64.add - f64.sub - local.get $2 - i32.const 2 - i32.ge_s - select - local.get $1 - f64.div - else f64.const 0 + f64.mul + local.get $3 + local.get $4 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$2 + drop + local.get $3 + local.get $4 + i64.sub + local.set $3 end + local.get $10 + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $5 + i64.sub local.set $4 local.get $3 - i64.const 4294967295 - i64.and local.get $5 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 + i64.shl + local.set $3 + local.get $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 $6 + i64.const 63 i64.shl i64.or f64.reinterpret_i64 - f64.const -1 - f64.add - local.set $1 - end - local.get $1 - local.get $1 - f64.const 2 - f64.add - f64.div - local.tee $6 - local.get $6 - f64.mul - local.tee $7 - local.get $7 - f64.mul - local.set $0 - local.get $6 - local.get $1 - f64.const 0.5 - f64.mul - local.get $1 - f64.mul - local.tee $6 - local.get $7 - local.get $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 $2 - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - local.get $4 - f64.add - f64.add - local.get $6 - f64.sub - local.get $1 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.log (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (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 - local.get $0 - f64.const -1 - f64.add - local.tee $0 - local.get $0 - f64.mul - local.tee $4 - local.get $0 - f64.mul - local.tee $5 - local.get $0 - f64.const -0.24999999999998432 - f64.mul - f64.const 0.3333333333333352 - f64.add - local.get $4 - f64.const 0.19999999999320328 - f64.mul - f64.add - local.get $5 - local.get $0 - f64.const 0.14285715076560868 - f64.mul - f64.const -0.16666666669929706 - f64.add - local.get $4 - f64.const -0.12499997863982555 - f64.mul - f64.add - local.get $5 - local.get $0 - f64.const -0.10000486757818193 - f64.mul - f64.const 0.11110712032936046 - f64.add - local.get $4 - f64.const 0.09181994006195467 - f64.mul - f64.add - local.get $5 - 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 $4 - f64.add - local.get $4 - f64.sub - local.tee $4 - local.get $4 - f64.mul - f64.const -0.5 - f64.mul - local.tee $5 - f64.add - local.tee $6 - f64.sub - local.get $5 - f64.add - local.get $0 - local.get $4 - f64.sub - f64.const -0.5 - f64.mul - local.get $4 - local.get $0 - f64.add - f64.mul - f64.add - f64.add - local.get $6 - f64.add - br $~lib/util/math/log_lut|inlined.0 - end - local.get $1 - i64.const 48 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 16 - i32.sub - i32.const 32736 - i32.ge_u - if - f64.const -1 - local.get $0 - 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 - i64.const 9218868437227405312 - i64.eq - br_if $~lib/util/math/log_lut|inlined.0 - drop - i32.const 1 - local.get $2 - i32.const 32752 - i32.and - i32.const 32752 - i32.eq - local.get $2 - i32.const 32768 - i32.and - select - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - local.get $0 - f64.div - br $~lib/util/math/log_lut|inlined.0 - end - 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 $3 - i64.const 45 - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - i32.const 4 - i32.shl - local.tee $2 - i32.const 1088 - i32.add - local.set $7 - local.get $3 - i64.const 52 - i64.shr_s - f64.convert_i64_s - local.tee $0 - f64.const 0.6931471805598903 - f64.mul - local.get $7 - f64.load offset=8 - f64.add - local.tee $4 - local.get $1 - local.get $3 - i64.const -4503599627370496 - i64.and - i64.sub - f64.reinterpret_i64 - local.get $2 - i32.const 3136 - i32.add - local.tee $2 - f64.load - f64.sub - local.get $2 - f64.load offset=8 - f64.sub - local.get $7 - f64.load - f64.mul - local.tee $5 - f64.add - local.set $6 - local.get $4 - local.get $6 - f64.sub - local.get $5 - f64.add - local.get $0 - f64.const 5.497923018708371e-14 - f64.mul - f64.add - local.get $5 - local.get $5 - f64.mul - local.tee $0 - f64.const -0.5000000000000001 - f64.mul - f64.add - local.get $5 - local.get $0 - f64.mul - local.get $5 - f64.const -0.2499999999622955 - f64.mul - f64.const 0.33333333331825593 - f64.add - local.get $0 - local.get $5 - f64.const -0.16667054827627667 - f64.mul - f64.const 0.20000304511814496 - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.get $6 - f64.add - end - ) - (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i64) - block $__inlined_func$~lib/math/NativeMath.acosh$8 (result f64) - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 4607182418800017408 - i64.lt_s - br_if $__inlined_func$~lib/math/NativeMath.acosh$8 - drop - local.get $4 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $4 - i64.const 1024 - i64.lt_u - if - local.get $0 - f64.const -1 - f64.add - local.tee $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - local.get $3 - f64.add - f64.add - f64.sqrt - f64.add - call $~lib/math/NativeMath.log1p - br $__inlined_func$~lib/math/NativeMath.acosh$8 - end - local.get $4 - i64.const 1049 - i64.lt_u - if - local.get $0 - local.get $0 - f64.add - f64.const 1 - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.const -1 - f64.add - f64.sqrt - f64.add - f64.div - f64.sub - call $~lib/math/NativeMath.log - br $__inlined_func$~lib/math/NativeMath.acosh$8 - end - local.get $0 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add end + 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 $std/math/test_pow (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + local.get $0 local.get $1 + call $~lib/math/NativeMath.pow local.get $2 + local.get $3 call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/dom/Math.acosh local.get $1 + call $~lib/bindings/dom/Math.pow local.get $2 + local.get $3 call $std/math/check else i32.const 0 end ) - (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) - (local $1 f32) + (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) (local $2 i32) - (local $3 f32) + (local $3 i32) (local $4 i32) - (local $5 f32) - (local $6 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + local.get $1 + i32.reinterpret_f32 + local.tee $7 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $4 + local.get $7 i32.const 1 - local.set $2 + i32.shl + i32.eqz local.get $0 i32.reinterpret_f32 - local.tee $4 - i32.const 31 + local.tee $6 + i32.const 23 i32.shr_u - local.get $4 - i32.const 1054086096 - i32.lt_u + i32.const 255 + i32.and + local.tee $3 + i32.const 255 + i32.eq + i32.or + local.get $1 + local.get $1 + f32.ne i32.or if - local.get $4 - i32.const -1082130432 - i32.ge_u - if - local.get $0 - f32.const -1 - f32.eq - if - local.get $0 - f32.const 0 - f32.div - return - end - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - local.get $4 + local.get $0 + local.get $1 + f32.mul + local.tee $0 + local.get $0 + f32.div + return + end + local.get $6 + i32.const 1 + i32.shl + i32.eqz + if + local.get $0 + return + end + local.get $3 + if (result i32) + local.get $6 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $6 i32.const 1 + local.get $3 + local.get $6 + i32.const 9 i32.shl - i32.const 1728053248 - i32.lt_u + i32.clz + i32.sub + local.tee $3 + i32.sub + i32.shl + end + local.set $2 + local.get $4 + if (result i32) + local.get $7 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $7 + i32.const 1 + local.get $4 + local.get $7 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $4 + i32.sub + i32.shl + end + local.set $7 + block $do-break|0 + local.get $3 + local.get $4 + i32.lt_s if + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.eq + br_if $do-break|0 local.get $0 return end - local.get $4 - i32.const -1097468391 - i32.le_u - if (result f32) - i32.const 0 - local.set $2 - local.get $0 - else - f32.const 0 - end - local.set $1 - else - local.get $4 - i32.const 2139095040 + loop $while-continue|1 + local.get $3 + local.get $4 + i32.gt_s + if + local.get $2 + local.get $7 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i32.sub + else + local.get $2 + end + i32.const 1 + i32.shl + local.set $2 + local.get $5 + i32.const 1 + i32.shl + local.set $5 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + local.get $2 + local.get $7 i32.ge_u if - local.get $0 - return + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i32.sub + local.set $2 end - end - local.get $2 - if - local.get $0 - f32.const 1 - f32.add - local.tee $1 - i32.reinterpret_f32 - i32.const 4913933 - i32.add - local.tee $4 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.tee $2 - i32.const 25 - i32.lt_s - if (result f32) - f32.const 1 - local.get $1 - local.get $0 - f32.sub - f32.sub - local.get $0 - local.get $1 - f32.const -1 - f32.add - f32.sub + local.get $2 + if + local.get $3 local.get $2 - i32.const 2 - i32.ge_s - select - local.get $1 - f32.div + i32.const 8 + i32.shl + i32.clz + local.tee $7 + i32.sub + local.set $3 + local.get $2 + local.get $7 + i32.shl + local.set $2 else - f32.const 0 + i32.const -30 + local.set $3 end - local.set $3 - local.get $4 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const -1 - f32.add - local.set $1 end local.get $1 - local.get $1 - f32.const 2 - f32.add - f32.div - local.tee $5 - local.get $5 - f32.mul + f32.abs + local.set $1 + local.get $3 + i32.const 0 + i32.gt_s + 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.mul - local.set $6 - local.get $5 - local.get $1 - f32.const 0.5 - f32.mul - local.get $1 - f32.mul - local.tee $5 - local.get $0 - local.get $6 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add - f32.mul - local.get $6 - local.get $6 - f32.const 0.24279078841209412 - f32.mul - f32.const 0.40000972151756287 - f32.add - f32.mul f32.add - f32.add - f32.mul - local.get $2 - f32.convert_i32_s - local.tee $0 - f32.const 9.05800061445916e-06 - f32.mul - local.get $3 - f32.add - f32.add - local.get $5 - f32.sub + local.set $8 + local.get $0 local.get $1 - f32.add + f32.sub local.get $0 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) - (local $1 i32) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 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 -inf - local.get $1 + local.get $3 + local.get $4 + i32.eq + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.eq + if (result i32) + local.get $5 i32.const 1 - i32.shl - local.tee $4 - i32.eqz - br_if $~lib/util/math/logf_lut|inlined.0 - drop - local.get $0 + i32.and local.get $1 - i32.const 2139095040 - i32.eq - br_if $~lib/util/math/logf_lut|inlined.0 - drop + local.get $8 + f32.eq + i32.and local.get $1 - i32.const 31 - i32.shr_u - local.get $4 - i32.const -16777216 - i32.ge_u + local.get $8 + f32.lt i32.or - if - local.get $0 - local.get $0 - f32.sub - local.tee $0 - local.get $0 - f32.div - br $~lib/util/math/logf_lut|inlined.0 - end - local.get $0 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - i32.const 192937984 - i32.sub - local.set $1 - end - local.get $1 - i32.const 1060306944 - i32.sub - local.tee $4 - i32.const 19 - i32.shr_u - i32.const 15 - i32.and - i32.const 4 - i32.shl - i32.const 5184 - i32.add - local.set $5 - local.get $1 - local.get $4 - i32.const -8388608 - i32.and - i32.sub - f32.reinterpret_i32 - f64.promote_f32 - local.get $5 - f64.load - f64.mul - f64.const -1 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.set $3 - local.get $2 - f64.const 0.333456765744066 - f64.mul - f64.const -0.4999997485802103 - f64.add - local.get $3 - f64.const -0.25089342214237154 - f64.mul - f64.add - local.get $3 - f64.mul - local.get $5 - f64.load offset=8 - local.get $4 - 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 - ) - (func $std/math/test_acoshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - block $__inlined_func$~lib/math/NativeMathf.acosh$9 (result f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 2147483647 - i32.and - i32.const 1073741824 - i32.lt_u - if - local.get $0 - f32.const -1 - f32.add - local.tee $0 - local.get $0 - local.get $0 - f32.const 2 - f32.add - f32.mul - f32.sqrt - f32.add - call $~lib/math/NativeMathf.log1p - br $__inlined_func$~lib/math/NativeMathf.acosh$9 - end - local.get $3 - i32.const 1166016512 - i32.lt_u - if - local.get $0 - local.get $0 - f32.add - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - f32.mul - f32.const -1 - f32.add - f32.sqrt - f32.add - f32.div - f32.sub - call $~lib/math/NativeMathf.log - br $__inlined_func$~lib/math/NativeMathf.acosh$9 + else + i32.const 0 end - local.get $0 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add end - local.get $1 - local.get $2 - call $std/math/check + select + local.tee $0 + f32.neg + local.get $0 + local.get $6 + i32.const 0 + i32.lt_s + select ) - (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) - (local $1 i32) + (func $~lib/math/NativeMath.rem (param $0 f64) (param $1 f64) (result f64) (local $2 i64) - (local $3 i32) - (local $4 f64) - (local $5 f64) + (local $3 i64) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 f64) + local.get $1 + i64.reinterpret_f64 + local.tee $7 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $4 + local.get $7 + i64.const 1 + i64.shl + i64.eqz local.get $0 i64.reinterpret_f64 - local.tee $2 - i64.const 32 + local.tee $6 + i64.const 52 i64.shr_u - i32.wrap_i64 + i64.const 2047 + i64.and local.tee $3 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1072693248 - i32.ge_u + i64.const 2047 + i64.eq + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if - local.get $2 - i32.wrap_i64 - local.get $1 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $0 - f64.const 1.5707963267948966 - f64.mul - f64.const 7.52316384526264e-37 - f64.add - return - end - f64.const 0 local.get $0 + local.get $1 + f64.mul + local.tee $0 local.get $0 - f64.sub f64.div return end - local.get $1 - i32.const 1071644672 - i32.lt_u + local.get $6 + i64.const 1 + i64.shl + i64.eqz if - local.get $1 - i32.const 1045430272 - i32.lt_u - local.get $1 - i32.const 1048576 - i32.ge_u - i32.and + local.get $0 + return + end + local.get $3 + i64.eqz + if (result i64) + local.get $6 + i64.const 1 + local.get $3 + local.get $6 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $3 + i64.sub + i64.shl + else + local.get $6 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $2 + local.get $4 + i64.eqz + if (result i64) + local.get $7 + i64.const 1 + local.get $4 + local.get $7 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $4 + i64.sub + i64.shl + else + local.get $7 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $7 + block $do-break|0 + local.get $3 + local.get $4 + i64.lt_s if + local.get $3 + i64.const 1 + i64.add + local.get $4 + i64.eq + br_if $do-break|0 local.get $0 return end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.mul - 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 + loop $while-continue|1 + local.get $3 + local.get $4 + i64.gt_s + if + local.get $2 + local.get $7 + i64.ge_u + if (result i64) + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i64.sub + else + local.get $2 + end + i64.const 1 + i64.shl + local.set $2 + local.get $5 + i32.const 1 + i32.shl + local.set $5 + local.get $3 + i64.const 1 + i64.sub + local.set $3 + br $while-continue|1 + end + end + local.get $2 + local.get $7 + i64.ge_u + if + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i64.sub + local.set $2 + end + local.get $2 + i64.eqz + if + i64.const -60 + local.set $3 + else + local.get $3 + local.get $2 + i64.const 11 + i64.shl + i64.clz + local.tee $7 + i64.sub + local.set $3 + local.get $2 + local.get $7 + i64.shl + local.set $2 + end end - f64.const 0.5 - local.get $0 + local.get $1 f64.abs - f64.const 0.5 - f64.mul - f64.sub + local.set $1 + local.get $3 + i64.const 0 + i64.gt_s + 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 - f64.sqrt - local.set $4 - 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.set $8 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 $5 local.get $1 - i32.const 1072640819 - i32.ge_u - if (result f64) - f64.const 1.5707963267948966 - local.get $4 - local.get $4 - local.get $5 - f64.mul - f64.add - f64.const 2 - f64.mul - f64.const -6.123233995736766e-17 - f64.add - f64.sub + f64.sub + local.get $0 + local.get $3 + local.get $4 + i64.eq + if (result i32) + i32.const 1 else - f64.const 0.7853981633974483 - local.get $4 - local.get $4 - f64.add - local.get $5 - f64.mul - f64.const 6.123233995736766e-17 - local.get $0 - local.get $4 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $0 - f64.mul - f64.sub + local.get $3 + i64.const 1 + i64.add local.get $4 - local.get $0 - f64.add - f64.div - f64.const 2 - f64.mul - f64.sub - f64.sub - f64.const 0.7853981633974483 - local.get $0 - local.get $0 - f64.add - f64.sub - f64.sub - f64.sub + i64.eq + if (result i32) + local.get $5 + i32.const 1 + i32.and + local.get $1 + local.get $8 + f64.eq + i32.and + local.get $1 + local.get $8 + f64.lt + i32.or + else + i32.const 0 + end end + select local.tee $0 f64.neg local.get $0 - local.get $3 - i32.const 0 - i32.lt_s + local.get $6 + i64.const 0 + i64.lt_s select ) - (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) - (local $1 i32) - (local $2 f64) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1065353216 - i32.ge_u + (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 $1 - i32.const 1065353216 - i32.eq - if - local.get $0 - f32.const 1.5707963705062866 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 0 local.get $0 local.get $0 + f32.trunc f32.sub - f32.div + local.get $0 + f32.copysign return end local.get $1 - i32.const 1056964608 - i32.lt_u + i32.reinterpret_f32 + local.tee $6 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $7 + local.get $6 + i32.const 1 + i32.shl + local.tee $4 + i32.eqz + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $8 + i32.const 255 + i32.eq + i32.or + local.get $1 + local.get $1 + f32.ne + i32.or if - local.get $1 - i32.const 964689920 - i32.lt_u - local.get $1 - i32.const 8388608 - i32.ge_u - i32.and - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 local.get $0 + local.get $1 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.add return end - f64.const 1.5707963705062866 - f32.const 0.5 - local.get $0 - f32.abs - f32.const 0.5 - f32.mul - f32.sub - local.tee $3 - f64.promote_f32 - f64.sqrt - local.tee $2 - local.get $2 - local.get $3 - local.get $3 - local.get $3 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul local.get $3 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - f64.promote_f32 - f64.mul - f64.add - f64.const 2 - f64.mul - f64.sub - f32.demote_f64 - local.get $0 - f32.copysign - ) - (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i64) - (local $4 i64) - (local $5 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $3 + i32.const 1 + i32.shl + local.tee $2 local.get $4 - i64.const 9223372036854775807 - i64.and - f64.reinterpret_i64 - local.set $5 + i32.le_u + if + local.get $0 + local.get $2 + local.get $4 + i32.ne + f32.convert_i32_u + f32.mul + return + end local.get $3 - i64.const 1049 - i64.ge_u - if (result f64) - local.get $5 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add + i32.const -2147483648 + i32.and + local.set $5 + local.get $8 + if (result i32) + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or else local.get $3 - i64.const 1024 - i64.ge_u - if (result f64) - local.get $5 - local.get $5 - f64.add - f64.const 1 - local.get $5 - local.get $5 - f64.mul - f64.const 1 - f64.add - f64.sqrt - local.get $5 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log - else - local.get $3 - i64.const 997 - i64.ge_u - if (result f64) - local.get $5 - local.get $5 - local.get $5 - f64.mul - local.tee $5 - local.get $5 - f64.const 1 - f64.add - f64.sqrt - f64.const 1 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log1p - else - local.get $5 - end - end + i32.const 1 + local.get $8 + local.get $3 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $8 + i32.sub + i32.shl end - local.get $0 - f64.copysign - local.get $1 - local.get $2 - call $std/math/check + local.set $2 + local.get $7 if (result i32) - local.get $0 - call $~lib/bindings/dom/Math.asinh - local.get $1 - local.get $2 - call $std/math/check + local.get $6 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or else - i32.const 0 + local.get $6 + i32.const 1 + local.get $7 + local.get $6 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $7 + i32.sub + i32.shl end - ) - (func $std/math/test_asinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - f32.reinterpret_i32 - local.set $4 - local.get $3 - i32.const 1166016512 - i32.ge_u - if (result f32) - local.get $4 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - else - local.get $3 - i32.const 1073741824 - i32.ge_u - if (result f32) - local.get $4 - local.get $4 - f32.add - f32.const 1 - local.get $4 - local.get $4 - f32.mul - f32.const 1 - f32.add - f32.sqrt - local.get $4 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log - else + local.set $3 + loop $while-continue|0 + local.get $7 + local.get $8 + i32.lt_s + if + local.get $2 local.get $3 - i32.const 964689920 i32.ge_u - if (result f32) - local.get $4 - local.get $4 - local.get $4 - f32.mul - local.tee $4 - local.get $4 - f32.const 1 - f32.add - f32.sqrt - f32.const 1 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log1p + if (result i32) + local.get $2 + local.get $3 + i32.eq + if + local.get $0 + f32.const 0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub else - local.get $4 + local.get $2 end + i32.const 1 + i32.shl + local.set $2 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + br $while-continue|0 end end - local.get $0 - f32.copysign - local.get $1 local.get $2 - call $std/math/check + local.get $3 + i32.ge_u + if + local.get $2 + local.get $3 + i32.eq + if + local.get $0 + f32.const 0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub + local.set $2 + end + local.get $8 + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.tee $4 + i32.sub + local.set $3 + local.get $2 + local.get $4 + i32.shl + local.set $2 + local.get $3 + i32.const 0 + i32.gt_s + 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 + local.get $5 + i32.or + f32.reinterpret_i32 ) - (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) + (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) (local $1 f64) - (local $2 i32) + (local $2 f64) (local $3 i32) - (local $4 f64) - (local $5 f64) - local.get $0 - local.set $1 + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) local.get $0 i64.reinterpret_f64 + local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $6 + local.get $3 i32.const 2147483647 i32.and - local.tee $2 - i32.const 1141899264 - i32.ge_u + local.tee $3 + i32.const 1072243195 + i32.le_u if - local.get $0 - local.get $0 - f64.ne + local.get $3 + i32.const 1045430272 + i32.lt_u if local.get $0 return end - f64.const 1.5707963267948966 + local.get $0 + local.get $0 + local.get $0 + f64.mul + local.tee $1 + local.get $0 + f64.mul local.get $1 - f64.copysign + local.get $1 + local.get $1 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $1 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.const -0.16666666666666632 + f64.add + f64.mul + f64.add return end - local.get $2 - i32.const 1071382528 - i32.lt_u + local.get $3 + i32.const 2146435072 + i32.ge_u if - local.get $2 - i32.const 1044381696 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $3 - else local.get $0 - f64.abs - local.set $0 - local.get $2 - i32.const 1072889856 + local.get $0 + f64.sub + return + end + block $~lib/math/rempio2|inlined.1 (result i32) + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1073928572 i32.lt_u - if (result f64) - local.get $2 - i32.const 1072037888 - i32.lt_u + if + i32.const 1 + local.set $3 + local.get $6 if (result f64) local.get $0 - local.get $0 - f64.add - f64.const -1 - f64.add - local.get $0 - f64.const 2 - f64.add - f64.div - else - i32.const 1 - local.set $3 - local.get $0 - f64.const -1 - f64.add - local.get $0 - f64.const 1 + f64.const 1.5707963267341256 f64.add - f64.div - end - else - local.get $2 - i32.const 1073971200 - i32.lt_u - if (result f64) - i32.const 2 + local.set $0 + i32.const -1 local.set $3 - local.get $0 - f64.const -1.5 - f64.add - local.get $0 - f64.const 1.5 - f64.mul - f64.const 1 - f64.add - f64.div + local.get $4 + 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 $1 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end else - i32.const 3 - local.set $3 - f64.const -1 local.get $0 - f64.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f64.mul - local.tee $5 - local.get $5 - f64.mul - local.set $4 - local.get $0 - local.get $5 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - f64.const 0.016285820115365782 - f64.mul - f64.const 0.049768779946159324 - f64.add - f64.mul - f64.const 0.06661073137387531 - f64.add - f64.mul - f64.const 0.09090887133436507 - f64.add - f64.mul - f64.const 0.14285714272503466 - f64.add - f64.mul - f64.const 0.3333333333333293 - f64.add - f64.mul - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - f64.const -0.036531572744216916 - f64.mul - f64.const -0.058335701337905735 - f64.add - f64.mul - f64.const -0.0769187620504483 - f64.add - f64.mul - f64.const -0.11111110405462356 - f64.add - f64.mul - f64.const -0.19999999999876483 - f64.add - f64.mul - f64.add - f64.mul - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $4 - f64.sub - return - end - block $break|0 (result f64) - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - block $tablify|0 - local.get $3 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 - end - unreachable - end - f64.const 0.4636476090008061 - local.get $4 - f64.const -2.2698777452961687e-17 - f64.add + f64.const -1.5707963267341256 + f64.add + local.set $0 + local.get $4 + 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 $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 f64.sub - br $break|0 + f64.const -2.0222662487959506e-21 + f64.add end - f64.const 0.7853981633974483 - local.get $4 - f64.const -3.061616997868383e-17 - f64.add - local.get $0 - f64.sub - f64.sub - br $break|0 end - f64.const 0.982793723247329 - local.get $4 - f64.const -1.3903311031230998e-17 - f64.add local.get $0 - f64.sub - f64.sub - br $break|0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + local.get $3 + br $~lib/math/rempio2|inlined.1 end - f64.const 1.5707963267948966 local.get $4 - f64.const -6.123233995736766e-17 - f64.add - local.get $0 - f64.sub - f64.sub - end - local.get $1 - f64.copysign - ) - (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - local.get $0 - local.set $1 - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1283457024 - i32.ge_u - if - local.get $0 - local.get $0 - f32.ne - if - local.get $0 - return - end - f32.const 1.570796251296997 - local.get $1 - f32.copysign - return - end - local.get $2 - i32.const 1054867456 - i32.lt_u - if - local.get $2 - i32.const 964689920 + i32.const 1094263291 i32.lt_u if + local.get $4 + i32.const 20 + i32.shr_u + local.tee $3 local.get $0 - return - end - i32.const -1 - local.set $3 - else - local.get $0 - f32.abs - local.set $0 - local.get $2 - i32.const 1066926080 - i32.lt_u - if (result f32) - local.get $2 - i32.const 1060110336 - i32.lt_u - if (result f32) - local.get $0 - local.get $0 - f32.add - f32.const -1 - f32.add - local.get $0 - f32.const 2 - f32.add - f32.div - else - i32.const 1 - local.set $3 - local.get $0 - f32.const -1 - f32.add - local.get $0 - f32.const 1 - f32.add - f32.div - end - else - local.get $2 - i32.const 1075576832 - i32.lt_u - if (result f32) - i32.const 2 - local.set $3 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $7 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 + local.get $7 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 16 + i32.gt_u + if + local.get $7 + f64.const 2.0222662487959506e-21 + f64.mul local.get $0 - f32.const -1.5 - f32.add local.get $0 - f32.const 1.5 - f32.mul - f32.const 1 - f32.add - f32.div - else - i32.const 3 - local.set $3 - f32.const -1 + local.get $7 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $3 local.get $0 - f32.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f32.mul - local.tee $5 - local.get $5 - f32.mul - local.set $4 - local.get $0 - local.get $5 - local.get $4 - local.get $4 - f32.const 0.06168760731816292 - f32.mul - f32.const 0.14253635704517365 - f32.add - f32.mul - f32.const 0.333333283662796 - f32.add - f32.mul - local.get $4 - local.get $4 - f32.const -0.106480173766613 - f32.mul - f32.const -0.19999158382415771 - f32.add - f32.mul - f32.add - f32.mul - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $4 - f32.sub - return - end - block $break|0 (result f32) - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - block $tablify|0 - local.get $3 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 - end - unreachable - end - f32.const 0.46364760398864746 - local.get $4 - f32.const -5.01215824399992e-09 - f32.add + local.get $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $7 + f64.const 8.4784276603689e-32 + f64.mul local.get $0 - f32.sub - f32.sub - br $break|0 + local.get $0 + local.get $7 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $0 + local.get $2 + f64.sub + local.set $1 end - f32.const 0.7853981256484985 - local.get $4 - f32.const -3.774894707930798e-08 - f32.add - local.get $0 - f32.sub - f32.sub - br $break|0 end - f32.const 0.9827936887741089 - local.get $4 - f32.const -3.447321716976148e-08 - f32.add + local.get $1 + global.set $~lib/math/rempio2_y0 local.get $0 - f32.sub - f32.sub - br $break|0 - end - f32.const 1.570796251296997 - local.get $4 - f32.const -7.549789415861596e-08 - f32.add - local.get $0 - f32.sub - f32.sub - end - local.get $1 - f32.copysign - ) - (func $std/math/test_atanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i64) - (local $4 f64) - (local $5 f64) - local.get $0 - f64.abs - local.set $5 - local.get $0 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $3 - i64.const 1022 - i64.lt_u - if (result f64) - local.get $3 - i64.const 991 - i64.ge_u - if (result f64) - local.get $5 - local.get $5 - f64.add - local.tee $4 - local.get $4 - local.get $5 - f64.mul - f64.const 1 - local.get $5 + local.get $1 f64.sub - f64.div - f64.add - call $~lib/math/NativeMath.log1p - f64.const 0.5 - f64.mul - else - local.get $5 + local.get $2 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $7 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.1 end - else - local.get $5 - f64.const 1 + i32.const 0 local.get $5 - f64.sub - f64.div - f64.const 2 + call $~lib/math/pio2_large_quot + local.tee $3 + i32.sub + local.get $3 + local.get $6 + select + end + local.set $3 + global.get $~lib/math/rempio2_y0 + local.set $2 + global.get $~lib/math/rempio2_y1 + local.set $7 + local.get $3 + i32.const 1 + i32.and + if (result f64) + local.get $2 + local.get $2 f64.mul - call $~lib/math/NativeMath.log1p + local.tee $0 + local.get $0 + f64.mul + local.set $1 + f64.const 1 + local.get $0 f64.const 0.5 f64.mul - end - local.get $0 - f64.copysign - local.get $1 - local.get $2 - call $std/math/check - if (result i32) + local.tee $8 + f64.sub + local.tee $9 + f64.const 1 + local.get $9 + f64.sub + local.get $8 + f64.sub local.get $0 - call $~lib/bindings/dom/Math.atanh + local.get $0 + local.get $0 + local.get $0 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul local.get $1 + local.get $1 + f64.mul + local.get $0 + local.get $0 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul local.get $2 - call $std/math/check + local.get $7 + f64.mul + f64.sub + f64.add + f64.add else - i32.const 0 + local.get $2 + local.get $2 + f64.mul + local.tee $0 + local.get $2 + f64.mul + local.set $1 + local.get $2 + local.get $0 + local.get $7 + f64.const 0.5 + f64.mul + local.get $1 + local.get $0 + local.get $0 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $0 + local.get $0 + local.get $0 + f64.mul + f64.mul + local.get $0 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.sub + f64.mul + local.get $7 + f64.sub + local.get $1 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub end - ) - (func $std/math/test_atanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) + local.tee $0 + f64.neg local.get $0 - f32.abs - local.set $3 + local.get $3 + i32.const 2 + i32.and + select + ) + (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 1056964608 - i32.lt_u - if (result f32) - local.get $4 - i32.const 796917760 - i32.ge_u - if (result f32) - local.get $3 - local.get $3 - f32.add - local.get $3 - f32.const 1 - local.get $3 - f32.sub - f32.div - f32.const 1 - f32.add - f32.mul - call $~lib/math/NativeMathf.log1p - f32.const 0.5 - f32.mul - else - local.get $3 + i64.reinterpret_f64 + local.tee $3 + 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 1072243195 + i32.le_u + if + local.get $2 + i32.const 1044381696 + i32.lt_u + if + local.get $0 + return end - else - local.get $3 - f32.const 1 - local.get $3 - f32.sub - f32.div - f32.const 2 - f32.mul - call $~lib/math/NativeMathf.log1p - f32.const 0.5 - f32.mul + local.get $0 + f64.const 0 + i32.const 1 + call $~lib/math/tan_kern + return end - local.get $0 - f32.copysign - local.get $1 local.get $2 - call $std/math/check - ) - (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 f64) - block $__inlined_func$~lib/math/NativeMath.atan2 (result f64) - local.get $1 - local.get $0 - f64.add - local.get $0 + i32.const 2146435072 + i32.ge_u + if local.get $0 - f64.ne - local.get $1 - local.get $1 - f64.ne - i32.or - br_if $__inlined_func$~lib/math/NativeMath.atan2 - drop local.get $0 - i64.reinterpret_f64 - local.tee $5 + f64.sub + return + end + block $~lib/math/rempio2|inlined.2 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 - local.set $9 - local.get $1 - i64.reinterpret_f64 + i32.const 2147483647 + i32.and local.tee $7 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $8 - local.get $7 - i32.wrap_i64 - local.tee $6 - local.get $8 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz + i32.const 1073928572 + i32.lt_u if - local.get $0 - call $~lib/math/NativeMath.atan - br $__inlined_func$~lib/math/NativeMath.atan2 - end - local.get $8 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $9 - i32.const 31 - i32.shr_u - i32.or - local.set $4 - local.get $9 - i32.const 2147483647 - i32.and - local.tee $9 - local.get $5 - i32.wrap_i64 - i32.or - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - block $case0|0 - local.get $4 - br_table $case0|0 $case0|0 $case2|0 $case3|0 $break|0 - end - local.get $0 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - f64.const 3.141592653589793 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - f64.const -3.141592653589793 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - end - block $folding-inner0 - local.get $8 - i32.const 2147483647 - i32.and - local.tee $8 + i32.const 1 + local.set $2 local.get $6 - i32.or - i32.eqz - br_if $folding-inner0 - local.get $8 - i32.const 2146435072 - i32.eq - if - local.get $9 - i32.const 2146435072 - i32.eq + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $2 + local.get $7 + i32.const 1073291771 + i32.ne if (result f64) - f64.const 2.356194490192345 - f64.const 0.7853981633974483 - local.get $4 - i32.const 2 - i32.and - select - local.tee $10 - f64.neg - local.get $10 - local.get $4 - i32.const 1 - i32.and - select + 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 - f64.const 3.141592653589793 - f64.const 0 - local.get $4 - i32.const 2 - i32.and - select - local.tee $10 - f64.neg - local.get $10 - local.get $4 - i32.const 1 - i32.and - select + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $1 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const -1.5707963267341256 + f64.add + 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.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 $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const -2.0222662487959506e-21 + f64.add end - br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $9 - i32.const 2146435072 - i32.eq - local.get $8 - i32.const 67108864 - i32.add - local.get $9 - i32.lt_u - i32.or - br_if $folding-inner0 - local.get $9 - i32.const 67108864 - i32.add - local.get $8 - i32.lt_u - i32.const 0 + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + 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 $2 + local.get $0 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $4 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 local.get $4 - i32.const 2 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $5 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 i32.and - select - if (result f64) - f64.const 0 - else + i32.sub + i32.const 16 + i32.gt_u + if + local.get $4 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $0 local.get $0 + local.get $4 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub local.get $1 - f64.div - f64.abs - call $~lib/math/NativeMath.atan - end - local.set $10 - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 - end - local.get $10 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - local.get $10 - f64.neg - br $__inlined_func$~lib/math/NativeMath.atan2 - end - f64.const 3.141592653589793 - local.get $10 - f64.const -1.2246467991473532e-16 - f64.add + f64.sub + f64.sub + local.set $5 + local.get $2 + local.get $0 + local.get $5 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $4 + f64.const 8.4784276603689e-32 + f64.mul + local.get $0 + local.get $0 + local.get $4 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 f64.sub - br $__inlined_func$~lib/math/NativeMath.atan2 + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $5 + local.get $0 + local.get $5 + f64.sub + local.set $1 end - local.get $10 - f64.const -1.2246467991473532e-16 - f64.add - f64.const -3.141592653589793 - f64.add - br $__inlined_func$~lib/math/NativeMath.atan2 end - unreachable + local.get $1 + global.set $~lib/math/rempio2_y0 + local.get $0 + local.get $1 + f64.sub + local.get $5 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $4 + i32.trunc_sat_f64_s + local.set $2 + br $~lib/math/rempio2|inlined.2 end - f64.const -1.5707963267948966 - f64.const 1.5707963267948966 - local.get $4 - i32.const 1 - i32.and + i32.const 0 + local.get $3 + call $~lib/math/pio2_large_quot + local.tee $2 + i32.sub + local.get $2 + local.get $6 select + local.set $2 end + global.get $~lib/math/rempio2_y0 + global.get $~lib/math/rempio2_y1 + i32.const 1 local.get $2 - local.get $3 + i32.const 1 + i32.and + i32.const 1 + i32.shl + i32.sub + call $~lib/math/tan_kern + ) + (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/dom/Math.atan2 + call $~lib/bindings/dom/Math.min local.get $2 - local.get $3 + f64.const 0 call $std/math/check else i32.const 0 end ) - (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 + (func $std/math/test_max (param $0 f64) (param $1 f64) (param $2 f64) (result i32) local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.or - if - local.get $1 - local.get $0 - f32.add - return - end local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 1065353216 - i32.eq - if + f64.max + local.get $2 + f64.const 0 + call $std/math/check + if (result i32) local.get $0 - call $~lib/math/NativeMathf.atan - return + local.get $1 + call $~lib/bindings/dom/Math.max + local.get $2 + f64.const 0 + call $std/math/check + else + i32.const 0 end - local.get $3 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and + ) + (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 f64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) local.get $0 i32.reinterpret_f32 - local.tee $4 + local.tee $3 i32.const 31 i32.shr_u - i32.or - local.set $2 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $2 - br_table $case1|0 $case1|0 $case2|0 $case3|0 $break|0 - end - local.get $0 - return - end - f32.const 3.1415927410125732 - return - end - f32.const -3.1415927410125732 - return - end - end + local.set $6 block $folding-inner0 local.get $3 i32.const 2147483647 i32.and local.tee $3 - i32.eqz - br_if $folding-inner0 - local.get $3 - i32.const 2139095040 - i32.eq + i32.const 1061752794 + i32.le_u if - local.get $4 - i32.const 2139095040 - i32.eq - if (result f32) - f32.const 2.356194496154785 - f32.const 0.7853981852531433 - local.get $2 - i32.const 2 - i32.and - select - local.tee $0 - f32.neg - local.get $0 - local.get $2 - i32.const 1 - i32.and - select - else - f32.const 3.1415927410125732 - f32.const 0 - local.get $2 - i32.const 2 - i32.and - select - local.tee $0 - f32.neg - local.get $0 - local.get $2 - i32.const 1 - i32.and - select - end - return - end - local.get $4 - i32.const 2139095040 - i32.eq - local.get $3 - i32.const 218103808 - i32.add - local.get $4 - i32.lt_u - i32.or - br_if $folding-inner0 - local.get $4 - i32.const 218103808 - i32.add - local.get $3 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 2 - i32.and - select - if (result f32) - f32.const 0 - else - local.get $0 - local.get $1 - f32.div - f32.abs - call $~lib/math/NativeMathf.atan - end - local.set $0 - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $2 - br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 - end - local.get $0 - return - end - local.get $0 - f32.neg - return - end - f32.const 3.1415927410125732 + local.get $3 + i32.const 964689920 + i32.lt_u + if local.get $0 - f32.const 8.742277657347586e-08 - f32.add - f32.sub return end local.get $0 - f32.const 8.742277657347586e-08 - f32.add - f32.const -3.1415927410125732 - f32.add - return + f64.promote_f32 + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + local.set $4 + br $folding-inner0 end - unreachable - end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $2 - i32.const 1 - i32.and - select - ) - (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 f64) - local.get $0 - local.get $0 - f64.add - local.set $3 - block $__inlined_func$~lib/math/NativeMath.cbrt$18 - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 2146435072 - i32.ge_u - br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 - local.get $4 - i32.const 1048576 - i32.lt_u - if (result i32) + local.get $3 + i32.const 1081824209 + i32.le_u + if + local.get $3 + i32.const 1075235811 + i32.le_u + if + local.get $6 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + 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.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + 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 - local.tee $3 - f64.const 18014398509481984 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const -3.141592653589793 + f64.add + local.get $6 + select + f64.neg + local.tee $2 + local.get $2 f64.mul - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.eqz - br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 - local.get $4 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - else - local.get $4 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add + local.tee $1 + local.get $2 + f64.mul + local.set $4 + br $folding-inner0 end - local.set $4 - local.get $5 - i64.const -9223372036854775808 - i64.and - local.get $4 - 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 $6 - local.get $0 - local.get $3 - local.get $6 - local.get $6 - f64.const 1.6214297201053545 - f64.mul - f64.const -1.8849797954337717 - f64.add - f64.mul - f64.const 1.87595182427177 - f64.add - local.get $6 - local.get $6 - f64.mul - local.get $6 - f64.mul - local.get $6 - 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 $6 - local.get $3 - local.get $3 - local.get $6 - local.get $3 - f64.sub local.get $3 + i32.const 1088565717 + i32.le_u + if + local.get $3 + i32.const 1085271519 + i32.le_u + if + local.get $6 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + 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.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + 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 $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const -6.283185307179586 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + local.set $4 + br $folding-inner0 + end local.get $3 - f64.add - local.get $6 - f64.add - f64.div - f64.mul - f64.add - local.set $3 - end - local.get $3 - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/dom/Math.cbrt - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) - (local $8 f64) - block $__inlined_func$~lib/math/NativeMathf.cbrt$19 (result f32) - local.get $0 - local.get $0 - f32.add - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - local.tee $6 i32.const 2139095040 i32.ge_u - br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 - drop - local.get $6 - i32.const 8388608 - i32.lt_u - if (result i32) + if local.get $0 - local.get $6 - i32.eqz - br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 - drop local.get $0 - f32.const 16777216 - f32.mul - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.1 (result i32) + local.get $3 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.1 + end + local.get $3 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $7 + i32.const 63 i32.and + i64.extend_i32_s + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s i32.const 3 - i32.div_u - i32.const 642849266 + i32.shl + i32.const 5632 i32.add - else + local.tee $7 + i64.load offset=8 + local.set $5 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $9 + local.get $7 + i64.load + local.get $8 + i64.shl + local.get $5 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $5 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $7 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $5 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + 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 $5 + i64.const 62 + i64.shr_u + local.get $8 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $3 + i32.sub + local.get $3 local.get $6 - i32.const 3 - i32.div_u - i32.const 709958130 - i32.add + select end - local.get $4 - 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 $7 + local.set $3 + global.get $~lib/math/rempio2f_y + local.set $1 local.get $3 - local.get $0 - f64.promote_f32 - local.tee $5 - local.get $5 - f64.add - local.tee $3 - local.get $7 - f64.add - f64.mul - local.get $5 - local.get $7 - f64.add - local.get $7 - f64.add - f64.div - local.tee $7 - local.get $7 - f64.mul - local.get $7 - f64.mul - local.set $8 - local.get $7 + i32.const 1 + i32.and + if (result f32) + local.get $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $1 + local.get $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.tee $1 + local.get $2 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $1 + local.get $2 + local.get $2 + f64.mul + f64.mul + local.get $2 + 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 $3 - local.get $8 - f64.add - f64.mul - local.get $5 - local.get $8 - f64.add - local.get $8 - f64.add - f64.div - f32.demote_f64 + i32.const 2 + i32.and + select + return end - local.get $1 local.get $2 - call $std/math/check + local.get $4 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $4 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 ) - (func $~lib/math/pio2_large_quot (param $0 i64) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 f64) - (local $6 i64) - (local $7 i64) + (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 f64) + (local $7 i32) (local $8 i64) (local $9 i64) - (local $10 i64) - (local $11 i64) - (local $12 i64) local.get $0 - i64.const 9223372036854775807 - i64.and - i64.const 52 - i64.shr_u - i64.const 1045 - i64.sub - local.tee $1 - i64.const 63 - i64.and - local.set $6 - local.get $1 - i64.const 6 - i64.shr_s - i32.wrap_i64 - i32.const 3 - i32.shl - i32.const 5440 - i32.add - local.tee $4 - i64.load - local.set $3 - local.get $4 - i64.load offset=8 - local.set $2 - local.get $4 - i64.load offset=16 - local.set $1 - local.get $6 - i64.const 0 - i64.ne - if + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $5 + block $folding-inner0 local.get $3 - local.get $6 - i64.shl - local.get $2 - i64.const 64 - local.get $6 - i64.sub - local.tee $7 - i64.shr_u - i64.or + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1061752794 + i32.le_u + if + local.get $3 + i32.const 964689920 + i32.lt_u + if + f32.const 1 + return + end + local.get $0 + f64.promote_f32 + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + br $folding-inner0 + end + local.get $3 + i32.const 1081824209 + i32.le_u + if + local.get $3 + i32.const 1075235811 + i32.gt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const -3.141592653589793 + f64.add + local.get $5 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + 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 $5 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + else + f64.const 1.5707963267948966 + local.get $0 + f64.promote_f32 + f64.sub + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + end + local.set $6 + local.get $2 + local.get $6 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $6 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + 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 $3 + i32.const 1088565717 + i32.le_u + if + local.get $3 + i32.const 1085271519 + i32.gt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const -6.283185307179586 + f64.add + local.get $5 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + br $folding-inner0 + else + local.get $5 + if (result f64) + local.get $0 + f32.neg + f64.promote_f32 + f64.const -4.71238898038469 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + else + local.get $0 + f64.promote_f32 + f64.const -4.71238898038469 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + end + local.set $6 + local.get $2 + local.get $6 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $6 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + 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 $3 + 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 $3 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.0 + end + local.get $3 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $7 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $4 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $9 + local.get $7 + i64.load + local.get $8 + i64.shl + local.get $4 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $4 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $7 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $4 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $4 + 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 $4 + i64.const 62 + i64.shr_u + local.get $8 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $3 + i32.sub + local.get $3 + local.get $5 + select + end local.set $3 - local.get $2 - local.get $6 - i64.shl - local.get $1 - local.get $7 - i64.shr_u - i64.or - local.set $2 - local.get $1 - local.get $6 - i64.shl - local.get $4 - i64.load offset=24 - local.get $7 - i64.shr_u - i64.or + global.get $~lib/math/rempio2f_y local.set $1 + local.get $3 + i32.const 1 + i32.and + if (result f32) + local.get $1 + local.get $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.tee $1 + local.get $2 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $1 + local.get $2 + local.get $2 + f64.mul + f64.mul + local.get $2 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + 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 $3 + i32.const 1 + i32.add + i32.const 2 + i32.and + select + return end - local.get $0 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.tee $6 - i64.const 4294967295 - i64.and - local.set $7 - local.get $2 - i64.const 4294967295 - i64.and - local.tee $8 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $9 - i64.mul + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add local.get $2 - i64.const 32 - i64.shr_u - local.tee $2 - local.get $7 - i64.mul - local.get $7 - local.get $8 - i64.mul - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.tee $8 - i64.const 4294967295 - i64.and - i64.add - local.set $10 + f64.const 0.04166662332373906 + f64.mul + f64.add local.get $2 - local.get $9 - i64.mul - local.get $8 - i64.const 32 - i64.shr_u - i64.add - local.get $10 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $9 local.get $1 - i64.const 32 - i64.shr_u - i64.mul - local.tee $1 - local.get $7 - i64.const 4294967295 - i64.and - local.get $10 - i64.const 32 - i64.shl - i64.add - i64.add - local.tee $2 + f64.mul local.get $1 - i64.lt_u - i64.extend_i32_u - global.get $~lib/math/res128_hi - local.get $3 - local.get $6 - i64.mul - i64.add - i64.add - local.tee $3 - i64.const 2 - i64.shl - local.get $2 - i64.const 62 - i64.shr_u - i64.or - local.tee $6 - i64.const 63 - i64.shr_s - local.tee $7 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + ) + (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) + (local $1 f64) + (local $2 f64) + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 31 + i32.shr_u + local.set $6 + block $folding-inner1 + block $folding-inner0 + local.get $4 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1061752794 + i32.le_u + if + local.get $4 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end + local.get $0 + f64.promote_f32 + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + local.get $4 + i32.const 1081824209 + i32.le_u + if + local.get $4 + i32.const 1075235811 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 1.5707963267948966 + f64.add + local.get $1 + f64.const -1.5707963267948966 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const -3.141592653589793 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + unreachable + end + local.get $4 + i32.const 1088565717 + i32.le_u + if + local.get $4 + i32.const 1085271519 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 4.71238898038469 + f64.add + local.get $1 + f64.const -4.71238898038469 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const -6.283185307179586 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + unreachable + end + local.get $4 + 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 $4 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.2 + end + local.get $4 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $7 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $5 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $4 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $9 + local.get $7 + i64.load + local.get $8 + i64.shl + local.get $5 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $5 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $7 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $5 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + 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 $5 + i64.const 62 + i64.shr_u + local.get $8 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $4 + i32.sub + local.get $4 + local.get $6 + select + end + local.set $4 + global.get $~lib/math/rempio2f_y + local.tee $1 + local.get $1 + f64.mul + local.tee $2 + local.get $2 + f64.mul + local.set $3 + f64.const -1 + local.get $1 + local.get $2 + local.get $1 + f64.mul + local.tee $1 + local.get $2 + f64.const 0.13339200271297674 + f64.mul + f64.const 0.3333313950307914 + f64.add + f64.mul + f64.add + local.get $1 + local.get $3 + f64.mul + local.get $2 + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $3 + local.get $2 + f64.const 0.009465647849436732 + f64.mul + f64.const 0.002974357433599673 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $1 + f64.div + local.get $1 + local.get $4 + i32.const 1 + i32.and + select + f32.demote_f64 + return + end + local.get $2 + local.get $1 + local.get $2 + f64.mul + local.tee $2 + local.get $1 + f64.const 0.13339200271297674 + f64.mul + f64.const 0.3333313950307914 + f64.add + f64.mul + f64.add + local.get $2 + local.get $3 + f64.mul + local.get $1 + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $3 + local.get $1 + f64.const 0.009465647849436732 + f64.mul + f64.const 0.002974357433599673 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + return + end + f64.const -1 local.get $2 - i64.const 2 - i64.shl - i64.xor - local.set $2 - local.get $6 - local.get $7 - i64.const 1 - i64.shr_s - i64.xor - local.tee $1 - i64.clz - local.set $8 local.get $1 - local.get $8 - i64.shl local.get $2 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - local.tee $9 - i64.const 4294967295 - i64.and - local.set $1 - local.get $9 - i64.const 32 - i64.shr_u - local.tee $10 - i64.const 560513588 - i64.mul - local.get $1 - i64.const 3373259426 - i64.mul - local.get $1 - i64.const 560513588 - i64.mul - local.tee $11 - i64.const 32 - i64.shr_u - i64.add - local.tee $12 - i64.const 4294967295 - i64.and - i64.add - local.set $1 - local.get $10 - i64.const 3373259426 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add + f64.mul + local.tee $2 local.get $1 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $9 - f64.convert_i64_u - f64.const 3.753184150245214e-04 + f64.const 0.13339200271297674 f64.mul - local.get $2 - local.get $8 - i64.shl - f64.convert_i64_u - f64.const 3.834951969714103e-04 + f64.const 0.3333313950307914 + f64.add f64.mul f64.add - i64.trunc_sat_f64_u - local.tee $2 - local.get $11 - i64.const 4294967295 - i64.and + local.get $2 + local.get $3 + f64.mul local.get $1 - i64.const 32 - i64.shl - i64.add - local.tee $1 - i64.gt_u - i64.extend_i32_u - global.get $~lib/math/res128_hi - local.tee $9 - i64.const 11 - i64.shr_u - i64.add - f64.convert_i64_u - global.set $~lib/math/rempio2_y0 - local.get $9 - i64.const 53 - i64.shl + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $3 local.get $1 - i64.const 11 - i64.shr_u - i64.or - local.get $2 - i64.add - f64.convert_i64_u - f64.const 5.421010862427522e-20 + f64.const 0.009465647849436732 f64.mul - global.set $~lib/math/rempio2_y1 - global.get $~lib/math/rempio2_y0 - i64.const 4372995238176751616 - local.get $8 - i64.const 52 - i64.shl - i64.sub - local.get $0 - local.get $6 - i64.xor - i64.const -9223372036854775808 - i64.and - i64.or - f64.reinterpret_i64 - local.tee $5 + f64.const 0.002974357433599673 + f64.add f64.mul - global.set $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - local.get $5 + f64.add f64.mul - global.set $~lib/math/rempio2_y1 - local.get $3 - i64.const 62 - i64.shr_s - local.get $7 - i64.sub - i32.wrap_i64 + f64.add + f64.div + f32.demote_f64 ) - (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) + (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) + (local $3 f64) + (local $4 f64) + (local $5 i32) + (local $6 i64) (local $7 f64) (local $8 f64) - (local $9 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 31 - i32.shr_u - local.set $6 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1072243195 - i32.le_u - if - local.get $3 - i32.const 1044816030 - i32.lt_u + block $~lib/util/math/exp_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.tee $1 + i32.const 969 + i32.sub + local.tee $5 + i32.const 63 + i32.ge_u if f64.const 1 - return + local.get $5 + 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 $2 + i64.const -4503599627370496 + i64.eq + br_if $~lib/util/math/exp_lut|inlined.0 + drop + local.get $0 + 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 $2 + i64.const 0 + i64.lt_s + select + br $~lib/util/math/exp_lut|inlined.0 + end + i32.const 0 + local.set $1 end local.get $0 - local.get $0 - f64.mul - local.tee $1 - local.get $1 + f64.const 184.6649652337873 f64.mul + f64.const 6755399441055744 + f64.add + local.tee $3 + i64.reinterpret_f64 + local.tee $6 + 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 $5 + i64.load offset=8 + local.get $6 + i64.const 45 + i64.shl + i64.add local.set $2 - f64.const 1 - local.get $1 - f64.const 0.5 - f64.mul - local.tee $7 - f64.sub - local.tee $8 - f64.const 1 - local.get $8 - f64.sub - local.get $7 - f64.sub - local.get $1 - local.get $1 - local.get $1 - local.get $1 - f64.const 2.480158728947673e-05 - f64.mul - f64.const -0.001388888888887411 + local.get $0 + local.get $3 + f64.const -6755399441055744 f64.add + local.tee $0 + f64.const -0.005415212348111709 f64.mul - f64.const 0.0416666666666666 f64.add + local.get $0 + f64.const -1.2864023111638346e-14 f64.mul - local.get $2 - local.get $2 - f64.mul - local.get $1 - local.get $1 - f64.const -1.1359647557788195e-11 + f64.add + local.tee $0 + local.get $0 f64.mul - f64.const 2.087572321298175e-09 + local.set $3 + local.get $5 + f64.load + local.get $0 f64.add + local.get $3 + local.get $0 + f64.const 0.16666666666665886 f64.mul - f64.const -2.7557314351390663e-07 + f64.const 0.49999999999996786 f64.add f64.mul f64.add + local.get $3 + local.get $3 f64.mul local.get $0 - f64.const 0 + f64.const 0.008333335853059549 f64.mul - f64.sub + f64.const 0.0416666808410674 f64.add + f64.mul f64.add - return - end - local.get $3 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.0 (result i32) - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1073928572 - i32.lt_u + local.set $0 + local.get $1 + i32.eqz if - i32.const 1 - local.set $3 - local.get $6 - if (result f64) - local.get $0 - f64.const 1.5707963267341256 - f64.add - local.set $0 - i32.const -1 - local.set $3 - local.get $4 - 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 $1 - f64.const 2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 + block $~lib/util/math/specialcase|inlined.0 (result f64) + local.get $6 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $2 + i64.const 4544132024016830464 + i64.sub + f64.reinterpret_i64 + local.tee $3 + local.get $3 local.get $0 - f64.sub - f64.const 2.0222662487959506e-21 + f64.mul f64.add + f64.const 5486124068793688683255936e279 + f64.mul + br $~lib/util/math/specialcase|inlined.0 end - else + local.get $2 + i64.const 4602678819172646912 + i64.add + local.tee $2 + f64.reinterpret_i64 + local.tee $3 local.get $0 - f64.const -1.5707963267341256 + f64.mul + local.set $7 + local.get $3 + local.get $7 f64.add - local.set $0 - local.get $4 - i32.const 1073291771 - i32.ne + local.tee $4 + f64.abs + f64.const 1 + f64.lt if (result f64) - local.get $0 - local.get $0 - f64.const -6.077100506506192e-11 + f64.const 1 + local.get $4 + f64.copysign + local.tee $8 + local.get $4 f64.add local.tee $0 + local.get $8 + local.get $0 f64.sub - f64.const -6.077100506506192e-11 + local.get $4 f64.add - else - local.get $0 - f64.const -6.077100506303966e-11 + local.get $3 + local.get $4 + f64.sub + local.get $7 f64.add - local.tee $1 - f64.const -2.0222662487959506e-21 f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const -2.0222662487959506e-21 f64.add + local.get $8 + f64.sub + local.tee $0 + f64.const 0 + f64.eq + if (result f64) + local.get $2 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + else + local.get $0 + end + else + local.get $4 end + f64.const 2.2250738585072014e-308 + f64.mul end + br $~lib/util/math/exp_lut|inlined.0 + end + local.get $2 + f64.reinterpret_i64 + local.tee $3 + local.get $3 + local.get $0 + f64.mul + f64.add + end + ) + (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 i64) + (local $12 i64) + (local $13 f64) + (local $14 f64) + (local $15 f64) + (local $16 f64) + (local $17 f64) + (local $18 i32) + local.get $1 + f64.abs + f64.const 2 + f64.le + if + local.get $1 + f64.const 2 + f64.eq + if local.get $0 - global.set $~lib/math/rempio2_y0 - global.set $~lib/math/rempio2_y1 - local.get $3 - br $~lib/math/rempio2|inlined.0 + local.get $0 + f64.mul + return end - local.get $4 - i32.const 1094263291 - i32.lt_u + local.get $1 + f64.const 0.5 + f64.eq if - local.get $4 - i32.const 20 - i32.shr_u - local.tee $3 local.get $0 + f64.sqrt + f64.abs + f64.const inf local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $7 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $7 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $2 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u + 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 + i64.reinterpret_f64 + local.tee $11 + i64.const 52 + i64.shr_u + local.set $6 + block $~lib/util/math/pow_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + local.tee $5 + i64.const 1 + i64.sub + i64.const 2046 + i64.ge_u + if (result i32) + i32.const 1 + else + local.get $6 + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + end + if + local.get $11 + i64.const 1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + i64.const -9007199254740993 + i64.ge_u if - local.get $7 - f64.const 2.0222662487959506e-21 + f64.const 1 + local.get $12 + i64.eqz + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const nan:0x8000000000000 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + local.get $0 + local.get $1 + f64.add + local.get $12 + i64.const -9007199254740992 + i64.gt_u + local.get $2 + i64.const 1 + i64.shl + local.tee $2 + i64.const -9007199254740992 + i64.gt_u + i32.or + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const nan:0x8000000000000 + local.get $2 + i64.const 9214364837600034816 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const 0 + local.get $11 + i64.const 63 + i64.shr_u + i64.eqz + local.get $2 + i64.const 9214364837600034816 + i64.lt_u + i32.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + local.get $1 + local.get $1 f64.mul + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740993 + i64.ge_u + if + f64.const 1 local.get $0 local.get $0 - local.get $7 - f64.const 6.077100506303966e-11 f64.mul - local.tee $1 - f64.sub local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $2 - local.get $3 + f64.neg local.get $0 local.get $2 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 + i64.const 63 i64.shr_u i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u + if (result i32) + block $~lib/util/math/checkint|inlined.0 (result i32) + i32.const 0 + local.get $11 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $2 + i64.const 1023 + i64.lt_u + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 2 + local.get $2 + i64.const 1075 + i64.gt_u + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 0 + local.get $11 + i64.const 1 + i64.const 1075 + local.get $2 + i64.sub + i64.shl + local.tee $2 + 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 $2 + local.get $11 + 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 + else + i32.const 0 + end + select + local.tee $0 + f64.div + local.get $0 + local.get $11 + i64.const 0 + i64.lt_s + select + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 0 + i64.lt_s + if + block $~lib/util/math/checkint|inlined.1 (result i32) + i32.const 0 + local.get $11 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $12 + i64.const 1023 + i64.lt_u + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 + local.get $12 + i64.const 1075 + i64.gt_u + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 0 + local.get $11 + i64.const 1 + i64.const 1075 + local.get $12 + i64.sub + i64.shl + local.tee $12 + 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 $11 + local.get $12 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 + end + local.tee $3 + i32.eqz if - local.get $7 - f64.const 8.4784276603689e-32 - f64.mul local.get $0 local.get $0 - local.get $7 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $1 f64.sub local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $2 local.get $0 - local.get $2 - f64.sub - local.set $1 + f64.div + br $~lib/util/math/pow_lut|inlined.0 end + local.get $5 + i64.const 2047 + i64.and + local.set $5 + i32.const 262144 + i32.const 0 + local.get $3 + i32.const 1 + i32.eq + select + local.set $4 + local.get $2 + i64.const 9223372036854775807 + i64.and + local.set $2 + end + local.get $6 + i64.const 2047 + i64.and + local.tee $12 + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + if + f64.const 1 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const 1 + local.get $12 + i64.const 958 + i64.lt_u + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const inf + f64.const 0 + local.get $6 + i64.const 2048 + i64.lt_u + local.get $2 + i64.const 4607182418800017408 + i64.gt_u + i32.eq + select + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $5 + i64.eqz + if + local.get $0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + i64.const 234187180623265792 + i64.sub + local.set $2 end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $2 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $7 - i32.trunc_sat_f64_s - br $~lib/math/rempio2|inlined.0 end - i32.const 0 - local.get $5 - call $~lib/math/pio2_large_quot - local.tee $3 - i32.sub - local.get $3 - local.get $6 - select - end - local.set $3 - global.get $~lib/math/rempio2_y0 - local.set $1 - global.get $~lib/math/rempio2_y1 - local.set $2 - local.get $3 - i32.const 1 - i32.and - if (result f64) - local.get $1 - local.get $1 - f64.mul - local.tee $0 - local.get $1 - f64.mul - local.set $7 - local.get $1 - local.get $0 local.get $2 - f64.const 0.5 - f64.mul - local.get $7 - local.get $0 - local.get $0 - f64.const 2.7557313707070068e-06 - f64.mul - f64.const -1.984126982985795e-04 - f64.add - f64.mul - f64.const 0.00833333333332249 - f64.add - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.mul - local.get $0 - f64.const 1.58969099521155e-10 + local.get $2 + i64.const 4604531861337669632 + i64.sub + local.tee $2 + i64.const -4503599627370496 + i64.and + i64.sub + local.tee $5 + i64.const 2147483648 + i64.add + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $7 + local.get $2 + i64.const 45 + i64.shr_u + i64.const 127 + i64.and + i32.wrap_i64 + i32.const 5 + i32.shl + i32.const 10272 + i32.add + local.tee $3 + f64.load + local.tee $8 f64.mul - f64.const -2.5050760253406863e-08 + f64.const -1 f64.add + local.set $9 + local.get $2 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.tee $13 + f64.const 0.6931471805598903 f64.mul + local.get $3 + f64.load offset=16 f64.add - f64.mul - f64.sub - f64.mul - local.get $2 - f64.sub + local.tee $0 + local.get $9 + local.get $5 + f64.reinterpret_i64 local.get $7 - f64.const -0.16666666666666632 - f64.mul - f64.sub f64.sub - else - local.get $1 - local.get $1 + local.get $8 f64.mul local.tee $7 - local.get $7 + f64.add + local.tee $14 + f64.add + local.set $15 + local.get $14 + local.get $14 + f64.const -0.5 f64.mul - local.set $8 - f64.const 1 - local.get $7 - f64.const 0.5 + local.tee $8 f64.mul - local.tee $0 - f64.sub - local.tee $9 - f64.const 1 + local.set $16 + local.get $15 local.get $9 - f64.sub + local.get $9 + f64.const -0.5 + f64.mul + local.tee $17 + f64.mul + local.tee $9 + f64.add + local.tee $10 + local.get $10 + local.get $13 + f64.const 5.497923018708371e-14 + f64.mul + local.get $3 + f64.load offset=24 + f64.add local.get $0 + local.get $15 f64.sub + local.get $14 + f64.add + f64.add local.get $7 - local.get $7 - local.get $7 - local.get $7 - f64.const 2.480158728947673e-05 + local.get $8 + local.get $17 + f64.add f64.mul - f64.const -0.001388888888887411 f64.add + local.get $15 + local.get $10 + f64.sub + local.get $9 + f64.add + f64.add + local.get $14 + local.get $16 f64.mul - f64.const 0.0416666666666666 + local.get $14 + f64.const 0.5000000000000007 + f64.mul + f64.const -0.6666666666666679 f64.add + local.get $16 + local.get $14 + f64.const -0.6666666663487739 f64.mul - local.get $8 - local.get $8 + f64.const 0.7999999995323976 + f64.add + local.get $16 + local.get $14 + f64.const 1.0000415263675542 f64.mul - local.get $7 - local.get $7 - f64.const -1.1359647557788195e-11 + f64.const -1.142909628459501 + f64.add f64.mul - f64.const 2.087572321298175e-09 f64.add f64.mul - f64.const -2.7557314351390663e-07 f64.add f64.mul f64.add + local.tee $0 + f64.add + local.tee $7 + f64.sub + local.get $0 + f64.add + global.set $~lib/util/math/log_tail + local.get $11 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.tee $0 + local.get $7 + i64.reinterpret_f64 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.tee $8 f64.mul + local.set $9 local.get $1 - local.get $2 + local.get $0 + f64.sub + local.get $8 f64.mul + local.get $1 + local.get $7 + local.get $8 f64.sub + global.get $~lib/util/math/log_tail f64.add + f64.mul f64.add - end - local.tee $0 - f64.neg - local.get $0 - local.get $3 - i32.const 1 - i32.add - i32.const 2 - i32.and - select - ) - (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 f64) - (local $7 i32) - (local $8 i64) - (local $9 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_u - local.set $5 - block $folding-inner0 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1061752794 - i32.le_u - if - local.get $3 - i32.const 964689920 - i32.lt_u - if - f32.const 1 - return - end - local.get $0 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - br $folding-inner0 - end - local.get $3 - i32.const 1081824209 - i32.le_u - if - local.get $3 - i32.const 1075235811 - i32.gt_u + local.set $0 + block $~lib/util/math/exp_inline|inlined.0 (result f64) + local.get $9 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.tee $3 + i32.const 969 + i32.sub + local.tee $18 + i32.const 63 + i32.ge_u if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 3.141592653589793 - f64.add - local.get $1 - f64.const -3.141592653589793 - f64.add - local.get $5 - select - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul + f64.const -1 f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - 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 $5 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - else - f64.const 1.5707963267948966 - local.get $0 - f64.promote_f32 - f64.sub - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - end - local.set $6 - local.get $2 - local.get $6 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $6 - local.get $1 - local.get $1 - f64.mul - f64.mul - local.get $1 - 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 $3 - i32.const 1088565717 - i32.le_u - if - local.get $3 - i32.const 1085271519 - i32.gt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 6.283185307179586 - f64.add - local.get $1 - f64.const -6.283185307179586 - f64.add - local.get $5 + local.get $4 select - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - br $folding-inner0 - else - local.get $5 - if (result f64) - local.get $0 - f32.neg - f64.promote_f32 - f64.const -4.71238898038469 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - else - local.get $0 - f64.promote_f32 - f64.const -4.71238898038469 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - end - local.set $6 - local.get $2 - local.get $6 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $6 - local.get $1 - local.get $1 - f64.mul - f64.mul - local.get $1 - 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 $3 - 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 $3 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $2 - local.get $1 - local.get $2 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $2 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $2 - i32.trunc_sat_f64_s - br $~lib/math/rempio2f|inlined.0 - end - local.get $3 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $7 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $8 - local.get $7 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $7 - i64.load offset=8 - local.set $4 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - i64.load - local.get $8 - i64.shl - local.get $4 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $8 - i64.const 32 - i64.gt_u - if (result i64) + local.get $18 + i32.const -2147483648 + i32.ge_u + br_if $~lib/util/math/exp_inline|inlined.0 + drop + f64.const -0 + f64.const 0 local.get $4 - local.get $8 - i64.const 32 - i64.sub - i64.shl - local.get $7 - i64.load offset=16 - i64.const 96 - local.get $8 - i64.sub - i64.shr_u - i64.or - else + select + f64.const -inf + f64.const inf local.get $4 - i64.const 32 - local.get $8 - i64.sub - i64.shr_u + select + local.get $2 + i64.const 0 + i64.lt_s + select + 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 $9 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $4 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s + f64.const 184.6649652337873 f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $4 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add + f64.const 6755399441055744 + f64.add + local.tee $1 + i64.reinterpret_f64 + local.tee $2 + i64.const 127 + i64.and + i64.const 1 + i64.shl i32.wrap_i64 - local.tee $3 - i32.sub - local.get $3 - local.get $5 - select - end - local.set $3 - global.get $~lib/math/rempio2f_y - local.set $1 - local.get $3 - i32.const 1 - i32.and - if (result f32) - local.get $1 - local.get $1 + i32.const 3 + i32.shl + i32.const 5664 + i32.add + local.tee $18 + i64.load offset=8 + local.get $2 + local.get $4 + i64.extend_i32_u + i64.add + i64.const 45 + i64.shl + i64.add + local.set $5 + local.get $9 local.get $1 + f64.const -6755399441055744 + f64.add + local.tee $1 + f64.const -0.005415212348111709 f64.mul - local.tee $2 + f64.add local.get $1 + f64.const -1.2864023111638346e-14 f64.mul - local.tee $1 - local.get $2 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 f64.add + local.get $0 + f64.add + local.tee $0 + local.get $0 f64.mul + local.set $1 + local.get $18 + f64.load + local.get $0 f64.add local.get $1 - local.get $2 - local.get $2 - f64.mul - f64.mul - local.get $2 - f64.const 2.718311493989822e-06 + local.get $0 + f64.const 0.16666666666665886 f64.mul - f64.const -1.9839334836096632e-04 + f64.const 0.49999999999996786 f64.add f64.mul f64.add - f32.demote_f64 - else - local.get $1 local.get $1 - f64.mul - local.tee $1 local.get $1 f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 + local.get $0 + f64.const 0.008333335853059549 f64.mul - f64.const 1 + f64.const 0.0416666808410674 f64.add - local.get $2 - f64.const 0.04166662332373906 f64.mul f64.add - local.get $2 - local.get $1 - f64.mul + local.set $0 + local.get $3 + i32.eqz + if + block $~lib/util/math/specialcase|inlined.1 (result f64) + local.get $2 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $5 + i64.const 4544132024016830464 + i64.sub + f64.reinterpret_i64 + local.tee $1 + local.get $1 + local.get $0 + f64.mul + f64.add + f64.const 5486124068793688683255936e279 + f64.mul + br $~lib/util/math/specialcase|inlined.1 + end + local.get $5 + i64.const 4602678819172646912 + i64.add + local.tee $2 + f64.reinterpret_i64 + local.tee $1 + local.get $0 + f64.mul + local.set $0 + local.get $1 + local.get $0 + f64.add + local.tee $7 + f64.abs + f64.const 1 + f64.lt + if (result f64) + f64.const 1 + local.get $7 + f64.copysign + local.tee $8 + local.get $7 + f64.add + local.tee $9 + local.get $8 + local.get $9 + f64.sub + local.get $7 + f64.add + local.get $1 + local.get $7 + f64.sub + local.get $0 + f64.add + f64.add + f64.add + local.get $8 + f64.sub + local.tee $0 + f64.const 0 + f64.eq + if (result f64) + local.get $2 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + else + local.get $0 + end + else + local.get $7 + end + f64.const 2.2250738585072014e-308 + f64.mul + end + br $~lib/util/math/exp_inline|inlined.0 + end + local.get $5 + f64.reinterpret_i64 + local.tee $1 local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add + local.get $0 f64.mul f64.add - f32.demote_f64 end - local.tee $0 - f32.neg - local.get $0 - local.get $3 - i32.const 1 - i32.add - i32.const 2 - i32.and - select - return end - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - 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 i32) - (local $2 f64) - (local $3 i32) + (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) (local $4 i32) (local $5 i64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $3 - local.get $5 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $4 - local.get $3 - i32.const 1078159482 - i32.ge_u - if + (local $6 i32) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 f64) + block $__inlined_func$~lib/math/NativeMath.atan2 (result f64) + local.get $1 + local.get $0 + f64.add local.get $0 local.get $0 f64.ne + local.get $1 + local.get $1 + f64.ne + i32.or + br_if $__inlined_func$~lib/math/NativeMath.atan2 + drop + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $9 + local.get $1 + i64.reinterpret_f64 + local.tee $7 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $8 + local.get $7 + i32.wrap_i64 + local.tee $6 + local.get $8 + i32.const 1072693248 + i32.sub + i32.or + i32.eqz if local.get $0 - return + call $~lib/math/NativeMath.atan + br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $4 + local.get $8 + i32.const 30 + i32.shr_u + i32.const 2 + i32.and + local.get $9 + i32.const 31 + i32.shr_u + i32.or + local.set $4 + local.get $9 + i32.const 2147483647 + i32.and + local.tee $9 + local.get $5 + i32.wrap_i64 + i32.or + i32.eqz if - f64.const -1 - return + block $break|0 + block $case3|0 + block $case2|0 + block $case0|0 + local.get $4 + br_table $case0|0 $case0|0 $case2|0 $case3|0 $break|0 + end + local.get $0 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + f64.const 3.141592653589793 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + f64.const -3.141592653589793 + br $__inlined_func$~lib/math/NativeMath.atan2 + end end - local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return + block $folding-inner0 + local.get $8 + i32.const 2147483647 + i32.and + local.tee $8 + local.get $6 + i32.or + i32.eqz + br_if $folding-inner0 + local.get $8 + i32.const 2146435072 + i32.eq + if + local.get $9 + i32.const 2146435072 + i32.eq + if (result f64) + f64.const 2.356194490192345 + f64.const 0.7853981633974483 + local.get $4 + i32.const 2 + i32.and + select + local.tee $10 + f64.neg + local.get $10 + local.get $4 + i32.const 1 + i32.and + select + else + f64.const 3.141592653589793 + f64.const 0 + local.get $4 + i32.const 2 + i32.and + select + local.tee $10 + f64.neg + local.get $10 + local.get $4 + i32.const 1 + i32.and + select + end + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $9 + i32.const 2146435072 + i32.eq + local.get $8 + i32.const 67108864 + i32.add + local.get $9 + i32.lt_u + i32.or + br_if $folding-inner0 + local.get $9 + i32.const 67108864 + i32.add + local.get $8 + i32.lt_u + i32.const 0 + local.get $4 + 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 $10 + block $break|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 + end + local.get $10 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $10 + f64.neg + br $__inlined_func$~lib/math/NativeMath.atan2 + end + f64.const 3.141592653589793 + local.get $10 + f64.const -1.2246467991473532e-16 + f64.add + f64.sub + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $10 + f64.const -1.2246467991473532e-16 + f64.add + f64.const -3.141592653589793 + f64.add + br $__inlined_func$~lib/math/NativeMath.atan2 + end + unreachable end - end - local.get $3 - i32.const 1071001154 - i32.gt_u - if - local.get $0 - i32.const 1 + f64.const -1.5707963267948966 + f64.const 1.5707963267948966 local.get $4 i32.const 1 - i32.shl - i32.sub - local.get $0 - f64.const 1.4426950408889634 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_sat_f64_s - local.get $3 - i32.const 1072734898 - i32.lt_u + i32.and select - local.tee $1 - f64.convert_i32_s - local.tee $0 - f64.const 0.6931471803691238 - f64.mul - f64.sub - local.tee $2 - local.get $2 + end + local.get $2 + local.get $3 + call $std/math/check + if (result i32) local.get $0 - f64.const 1.9082149292705877e-10 - f64.mul - local.tee $2 - f64.sub - local.tee $0 - f64.sub + local.get $1 + call $~lib/bindings/dom/Math.atan2 local.get $2 - f64.sub - local.set $2 - else local.get $3 - i32.const 1016070144 - i32.lt_u - if - local.get $0 - return - end - end - local.get $0 - local.get $0 - f64.const 0.5 - f64.mul - local.tee $7 - f64.mul - local.tee $6 - local.get $6 - f64.mul - local.set $8 - f64.const 3 - local.get $6 - f64.const -0.03333333333333313 - f64.mul - f64.const 1 - f64.add - local.get $8 - local.get $6 - f64.const -7.93650757867488e-05 - f64.mul - f64.const 1.5873015872548146e-03 - f64.add - local.get $8 - local.get $6 - f64.const -2.0109921818362437e-07 - f64.mul - f64.const 4.008217827329362e-06 - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.tee $8 - local.get $7 - f64.mul - f64.sub - local.set $7 - local.get $6 - local.get $8 - local.get $7 - f64.sub - f64.const 6 - local.get $0 - local.get $7 - f64.mul - f64.sub - f64.div - f64.mul - local.set $7 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - local.get $7 - f64.mul - local.get $6 - f64.sub - f64.sub - return + call $std/math/check + else + i32.const 0 end + ) + (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 - local.get $7 - local.get $2 - f64.sub - f64.mul - local.get $2 - f64.sub - local.get $6 - f64.sub - local.set $2 + local.get $0 + f32.ne local.get $1 - i32.const -1 - i32.eq + local.get $1 + f32.ne + i32.or if + local.get $1 local.get $0 - local.get $2 - f64.sub - f64.const 0.5 - f64.mul - f64.const -0.5 - f64.add + f32.add return end local.get $1 - i32.const 1 + i32.reinterpret_f32 + local.tee $3 + i32.const 1065353216 i32.eq if local.get $0 - f64.const -0.25 - f64.lt - if - local.get $2 - local.get $0 - f64.const 0.5 - f64.add - f64.sub - f64.const -2 - f64.mul - return - end - local.get $0 - local.get $2 - f64.sub - f64.const 2 - f64.mul - f64.const 1 - f64.add + call $~lib/math/NativeMathf.atan return end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - local.set $6 - local.get $1 - i32.const 0 - i32.lt_s - local.get $1 - i32.const 56 - i32.gt_s + local.get $3 + i32.const 30 + i32.shr_u + i32.const 2 + i32.and + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 31 + i32.shr_u i32.or + local.set $2 + local.get $4 + i32.const 2147483647 + i32.and + local.tee $4 + i32.eqz if - local.get $0 - local.get $2 - f64.sub - f64.const 1 - f64.add - local.tee $0 - local.get $0 - f64.add - f64.const 8988465674311579538646525e283 - f64.mul - local.get $0 - local.get $6 - f64.mul - local.get $1 - i32.const 1024 + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $2 + br_table $case1|0 $case1|0 $case2|0 $case3|0 $break|0 + end + local.get $0 + return + end + f32.const 3.1415927410125732 + return + end + f32.const -3.1415927410125732 + return + end + end + block $folding-inner0 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.eqz + br_if $folding-inner0 + local.get $3 + i32.const 2139095040 + i32.eq + if + local.get $4 + i32.const 2139095040 + i32.eq + if (result f32) + f32.const 2.356194496154785 + f32.const 0.7853981852531433 + local.get $2 + i32.const 2 + i32.and + select + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 1 + i32.and + select + else + f32.const 3.1415927410125732 + f32.const 0 + local.get $2 + i32.const 2 + i32.and + select + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 1 + i32.and + select + end + return + end + local.get $4 + i32.const 2139095040 i32.eq + local.get $3 + i32.const 218103808 + i32.add + local.get $4 + i32.lt_u + i32.or + br_if $folding-inner0 + local.get $4 + i32.const 218103808 + i32.add + local.get $3 + i32.lt_u + i32.const 0 + local.get $2 + i32.const 2 + i32.and select - f64.const -1 - f64.add - return + if (result f32) + f32.const 0 + else + local.get $0 + local.get $1 + f32.div + f32.abs + call $~lib/math/NativeMathf.atan + end + local.set $0 + block $break|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $2 + br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 + end + local.get $0 + return + end + local.get $0 + f32.neg + return + end + f32.const 3.1415927410125732 + local.get $0 + f32.const 8.742277657347586e-08 + f32.add + f32.sub + return + end + local.get $0 + f32.const 8.742277657347586e-08 + f32.add + f32.const -3.1415927410125732 + f32.add + return + end + unreachable end - local.get $0 - f64.const 1 - i64.const 1023 - local.get $1 - i64.extend_i32_s - i64.sub - i64.const 52 - i64.shl - f64.reinterpret_i64 - local.tee $0 - f64.sub - local.get $2 - f64.sub - f64.const 1 + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 local.get $2 - local.get $0 - f64.add - f64.sub - local.get $1 - i32.const 20 - i32.lt_s + i32.const 1 + i32.and select - f64.add - local.get $6 - f64.mul ) - (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i64) - (local $7 f64) - (local $8 f64) - block $~lib/util/math/exp_lut|inlined.0 (result f64) + (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + (local $6 f64) + (local $7 i32) + (local $8 i64) + (local $9 f64) + (local $10 f64) + block $~lib/util/math/exp2_lut|inlined.0 (result f64) local.get $0 i64.reinterpret_f64 - local.tee $2 + local.tee $4 i64.const 52 i64.shr_u i32.wrap_i64 i32.const 2047 i32.and - local.tee $1 + local.tee $3 i32.const 969 i32.sub - local.tee $5 + local.tee $7 i32.const 63 i32.ge_u if f64.const 1 - local.get $5 + local.get $7 i32.const -2147483648 i32.ge_u - br_if $~lib/util/math/exp_lut|inlined.0 + 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 $2 + local.get $4 i64.const -4503599627370496 i64.eq - br_if $~lib/util/math/exp_lut|inlined.0 + br_if $~lib/util/math/exp2_lut|inlined.0 drop local.get $0 f64.const 1 f64.add - local.get $1 + local.get $3 i32.const 2047 i32.ge_u - br_if $~lib/util/math/exp_lut|inlined.0 + br_if $~lib/util/math/exp2_lut|inlined.0 drop - f64.const 0 f64.const inf - local.get $2 + local.get $4 i64.const 0 - i64.lt_s - select - br $~lib/util/math/exp_lut|inlined.0 + i64.ge_s + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + f64.const 0 + local.get $4 + i64.const -4570929321408987136 + i64.ge_u + br_if $~lib/util/math/exp2_lut|inlined.0 + drop end + local.get $3 i32.const 0 - local.set $1 + local.get $4 + i64.const 1 + i64.shl + i64.const -9143996093422370816 + i64.le_u + select + local.set $3 end local.get $0 - f64.const 184.6649652337873 - f64.mul - f64.const 6755399441055744 + f64.const 52776558133248 f64.add - local.tee $3 + local.tee $5 i64.reinterpret_f64 - local.tee $6 + local.tee $8 i64.const 127 i64.and i64.const 1 @@ -4908,211 +5601,124 @@ i32.shl i32.const 5664 i32.add - local.tee $5 + local.tee $7 i64.load offset=8 - local.get $6 + local.get $8 i64.const 45 i64.shl i64.add - local.set $2 + local.set $4 local.get $0 - local.get $3 - f64.const -6755399441055744 + local.get $5 + f64.const -52776558133248 f64.add - local.tee $0 - f64.const -0.005415212348111709 + f64.sub + local.tee $5 + local.get $5 f64.mul - f64.add - local.get $0 - f64.const -1.2864023111638346e-14 + local.set $6 + local.get $7 + f64.load + local.get $5 + f64.const 0.6931471805599453 f64.mul f64.add - local.tee $0 - local.get $0 - f64.mul - local.set $3 + local.get $6 local.get $5 - f64.load - local.get $0 - f64.add - local.get $3 - local.get $0 - f64.const 0.16666666666665886 + f64.const 0.0555041086686087 f64.mul - f64.const 0.49999999999996786 + f64.const 0.24022650695909065 f64.add f64.mul f64.add - local.get $3 - local.get $3 + local.get $6 + local.get $6 f64.mul - local.get $0 - f64.const 0.008333335853059549 + local.get $5 + f64.const 1.3332074570119598e-03 f64.mul - f64.const 0.0416666808410674 + f64.const 0.009618131975721055 f64.add f64.mul f64.add - local.set $0 - local.get $1 + local.set $5 + local.get $3 i32.eqz if - block $~lib/util/math/specialcase|inlined.0 (result f64) - local.get $6 + block $~lib/util/math/specialcase2|inlined.0 (result f64) + local.get $8 i64.const 2147483648 i64.and i64.eqz if - local.get $2 - i64.const 4544132024016830464 + local.get $4 + i64.const 4503599627370496 i64.sub f64.reinterpret_i64 - local.tee $3 - local.get $3 - local.get $0 + local.tee $6 + local.get $5 f64.mul + local.get $6 f64.add - f64.const 5486124068793688683255936e279 + f64.const 2 f64.mul - br $~lib/util/math/specialcase|inlined.0 - end - local.get $2 - i64.const 4602678819172646912 - i64.add - local.tee $2 - f64.reinterpret_i64 - local.tee $3 - local.get $0 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.add - local.tee $4 - f64.abs - f64.const 1 - f64.lt - if (result f64) - f64.const 1 - local.get $4 - f64.copysign - local.tee $8 - local.get $4 - f64.add - local.tee $0 - local.get $8 - local.get $0 - f64.sub - local.get $4 - f64.add - local.get $3 - local.get $4 - f64.sub - local.get $7 - f64.add - f64.add - f64.add - local.get $8 - f64.sub - local.tee $0 - f64.const 0 - f64.eq - if (result f64) - local.get $2 - i64.const -9223372036854775808 - i64.and - f64.reinterpret_i64 - else - local.get $0 - end - else - local.get $4 - end - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp_lut|inlined.0 - end - local.get $2 - f64.reinterpret_i64 - local.tee $3 - local.get $3 - local.get $0 - f64.mul - f64.add - end - ) - (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 f64) - block $__inlined_func$~lib/math/NativeMath.cosh$20 (result f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - f64.reinterpret_i64 - local.set $5 - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 1072049730 - i32.lt_u - if - f64.const 1 - local.get $3 - i32.const 1045430272 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMath.cosh$20 - drop - local.get $5 - call $~lib/math/NativeMath.expm1 - local.tee $5 - local.get $5 - f64.mul - local.get $5 - local.get $5 - f64.add - f64.const 2 - f64.add - f64.div - f64.const 1 - f64.add - br $__inlined_func$~lib/math/NativeMath.cosh$20 - end - local.get $3 - i32.const 1082535490 - i32.lt_u - if - local.get $5 - call $~lib/math/NativeMath.exp - local.tee $5 - f64.const 1 - local.get $5 - f64.div - f64.add - f64.const 0.5 - f64.mul - br $__inlined_func$~lib/math/NativeMath.cosh$20 + br $~lib/util/math/specialcase2|inlined.0 + end + local.get $4 + i64.const 4602678819172646912 + i64.add + f64.reinterpret_i64 + local.tee $6 + local.get $5 + f64.mul + local.tee $9 + local.get $6 + f64.add + local.tee $10 + f64.const 1 + f64.lt + if (result f64) + local.get $10 + f64.const 1 + f64.add + local.tee $5 + f64.const 1 + local.get $5 + f64.sub + local.get $10 + f64.add + local.get $6 + local.get $10 + f64.sub + local.get $9 + f64.add + f64.add + f64.add + f64.const -1 + f64.add + else + local.get $10 + end + f64.const 2.2250738585072014e-308 + f64.mul + end + br $~lib/util/math/exp2_lut|inlined.0 end + local.get $4 + f64.reinterpret_i64 + local.tee $6 local.get $5 - f64.const -1416.0996898839683 - f64.add - call $~lib/math/NativeMath.exp - f64.const 2247116418577894884661631e283 - f64.mul - f64.const 2247116418577894884661631e283 f64.mul + local.get $6 + f64.add end local.get $1 local.get $2 call $std/math/check if (result i32) + f64.const 2 local.get $0 - call $~lib/bindings/dom/Math.cosh + call $~lib/bindings/dom/Math.pow local.get $1 local.get $2 call $std/math/check @@ -5120,700 +5726,670 @@ i32.const 0 end ) - (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 f32) - (local $7 f32) - local.get $0 - i32.reinterpret_f32 + (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 f64) + (local $13 f64) + local.get $1 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and local.tee $5 - i32.const 2147483647 - i32.and - local.set $3 - local.get $5 - i32.const 31 - i32.shr_u - local.set $5 - local.get $3 - i32.const 1100331076 - i32.ge_u - if - local.get $3 - i32.const 2139095040 - i32.gt_u - if - local.get $0 - return - end - local.get $5 - if - f32.const -1 - return - end - local.get $3 - i32.const 1118925335 - i32.gt_u - if - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - return - end - end - local.get $3 - i32.const 1051816472 - i32.gt_u - if - local.get $0 - i32.const 1 - local.get $5 - i32.const 1 - i32.shl - i32.sub - local.get $0 - f32.const 1.4426950216293335 - f32.mul - f32.const 0.5 - local.get $0 - f32.copysign - f32.add - i32.trunc_sat_f32_s - local.get $3 - i32.const 1065686418 - i32.lt_u - select - local.tee $1 - f32.convert_i32_s - local.tee $0 - f32.const 0.6931381225585938 - f32.mul - f32.sub - local.tee $2 - local.get $2 - local.get $0 - f32.const 9.05800061445916e-06 - f32.mul - local.tee $2 - f32.sub - local.tee $0 - f32.sub - local.get $2 - f32.sub - local.set $2 - else - local.get $3 - i32.const 855638016 - i32.lt_u - if - local.get $0 - return - end - end - f32.const 3 local.get $0 - local.get $0 - f32.const 0.5 - f32.mul - local.tee $6 - f32.mul + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and local.tee $4 - local.get $4 - f32.const 1.5807170420885086e-03 - f32.mul - f32.const -0.03333321213722229 - f32.add - f32.mul - f32.const 1 - f32.add - local.tee $7 - local.get $6 - f32.mul - f32.sub - local.set $6 - local.get $4 - local.get $7 - local.get $6 - f32.sub - f32.const 6 - local.get $0 - local.get $6 - f32.mul - f32.sub - f32.div - f32.mul - local.set $6 - local.get $1 - i32.eqz + i64.gt_u if - local.get $0 - local.get $0 - local.get $6 - f32.mul local.get $4 - f32.sub - f32.sub - return - end - local.get $0 - local.get $6 - local.get $2 - f32.sub - f32.mul - local.get $2 - f32.sub - local.get $4 - f32.sub - local.set $2 - local.get $1 - i32.const -1 - i32.eq - if - local.get $0 - local.get $2 - f32.sub - f32.const 0.5 - f32.mul - f32.const -0.5 - f32.add - return - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - f32.const -0.25 - f32.lt - if - local.get $2 - local.get $0 - f32.const 0.5 - f32.add - f32.sub - f32.const -2 - f32.mul - return - end - local.get $0 - local.get $2 - f32.sub - f32.const 2 - f32.mul - f32.const 1 - f32.add - return + local.get $5 + local.set $4 + local.set $5 end - local.get $1 - i32.const 127 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $4 - local.get $1 - i32.const 0 - i32.lt_s - local.get $1 - i32.const 56 - i32.gt_s - i32.or - if - local.get $0 - local.get $2 - f32.sub - f32.const 1 - f32.add - local.tee $0 - local.get $0 - f32.add - f32.const 1701411834604692317316873e14 - f32.mul - local.get $0 - local.get $4 - f32.mul - local.get $1 - i32.const 128 + local.get $5 + f64.reinterpret_i64 + local.tee $9 + local.set $0 + block $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $5 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $7 + i32.const 2047 i32.eq - select - f32.const -1 - f32.add - return - end - local.get $0 - f32.const 1 - i32.const 127 - local.get $1 - i32.sub - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.tee $0 - f32.sub - local.get $2 - f32.sub - f32.const 1 - local.get $2 - local.get $0 - f32.add - f32.sub - local.get $1 - i32.const 20 - i32.lt_s - select - f32.add - local.get $4 - f32.mul - ) - (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) - (local $1 f64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 f64) - block $~lib/util/math/expf_lut|inlined.0 (result f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 20 - i32.shr_u + br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $4 + f64.reinterpret_i64 + local.tee $1 + local.set $0 + local.get $5 + i64.eqz + local.get $4 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $8 i32.const 2047 - i32.and - local.tee $4 - i32.const 1067 - i32.ge_u - if - f32.const 0 - local.get $3 - i32.const -8388608 - i32.eq - br_if $~lib/util/math/expf_lut|inlined.0 - drop - local.get $0 - local.get $0 - f32.add - local.get $4 - i32.const 2040 - i32.ge_u - br_if $~lib/util/math/expf_lut|inlined.0 - drop - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.get $0 - 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 + i32.eq + i32.or + br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $1 + local.get $9 + f64.add + local.set $0 + local.get $8 + local.get $7 + i32.sub + i32.const 64 + i32.gt_s + br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + f64.const 1 + local.set $0 + local.get $8 + i32.const 1533 + i32.gt_u + if (result f64) + f64.const 5260135901548373507240989e186 + local.set $0 + local.get $1 + f64.const 1.90109156629516e-211 + f64.mul + local.set $1 + local.get $9 + f64.const 1.90109156629516e-211 + f64.mul + else + local.get $7 + i32.const 573 + i32.lt_u + if (result f64) + f64.const 1.90109156629516e-211 + local.set $0 + local.get $1 + f64.const 5260135901548373507240989e186 + f64.mul + local.set $1 + local.get $9 + f64.const 5260135901548373507240989e186 + f64.mul + else + local.get $9 + end end - local.get $0 - f64.promote_f32 - f64.const 46.16624130844683 + local.set $11 + local.get $1 + local.get $1 + local.get $1 + f64.const 134217729 f64.mul - local.tee $1 - f64.const 6755399441055744 + local.tee $9 + f64.sub + local.get $9 f64.add - local.tee $5 - i64.reinterpret_f64 - local.set $2 - local.get $1 - local.get $5 - f64.const -6755399441055744 + local.tee $9 + f64.sub + local.set $12 + local.get $11 + local.get $11 + local.get $11 + f64.const 134217729 + f64.mul + local.tee $10 + f64.sub + local.get $10 f64.add + local.tee $10 f64.sub - local.tee $1 - f64.const 0.021660849396613134 + local.set $13 + local.get $0 + local.get $10 + local.get $10 f64.mul - f64.const 1 + local.get $11 + local.get $11 + f64.mul + local.tee $0 + f64.sub + local.get $10 + local.get $10 f64.add - local.get $1 - f64.const 1.6938359250920212e-06 + local.get $13 + f64.add + local.get $13 f64.mul - f64.const 2.3459809789509004e-04 f64.add + local.get $9 + local.get $9 + f64.mul local.get $1 local.get $1 f64.mul + local.tee $1 + f64.sub + local.get $9 + local.get $9 + f64.add + local.get $12 + f64.add + local.get $12 f64.mul f64.add - local.get $2 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.const 7712 - i32.add - i64.load - local.get $2 - i64.const 47 - i64.shl - i64.add - f64.reinterpret_i64 + f64.add + local.get $0 + f64.add + local.get $1 + f64.add + f64.sqrt f64.mul - f32.demote_f64 + local.set $0 end + local.get $0 + local.get $2 + local.get $3 + call $std/math/check ) - (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - block $__inlined_func$~lib/math/NativeMathf.cosh$21 (result f32) + (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) + local.get $1 + i32.const 1023 + i32.gt_s + if (result f64) local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - f32.reinterpret_i32 + f64.const 8988465674311579538646525e283 + f64.mul local.set $0 - local.get $3 - i32.const 1060205079 - i32.lt_u - if - f32.const 1 - local.get $3 - i32.const 964689920 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMathf.cosh$21 - drop - local.get $0 - call $~lib/math/NativeMathf.expm1 - local.tee $0 - local.get $0 - f32.mul + local.get $1 + i32.const 1023 + i32.sub + local.tee $1 + i32.const 1023 + i32.gt_s + if (result f64) + i32.const 1023 + local.get $1 + i32.const 1023 + i32.sub + local.tee $1 + local.get $1 + i32.const 1023 + i32.ge_s + select + local.set $1 local.get $0 + f64.const 8988465674311579538646525e283 + f64.mul + else local.get $0 - f32.add - f32.const 2 - f32.add - f32.div - f32.const 1 - f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh$21 end - local.get $3 - i32.const 1118925335 - i32.lt_u - if + else + local.get $1 + i32.const -1022 + i32.lt_s + if (result f64) local.get $0 - call $~lib/math/NativeMathf.exp - local.tee $0 - f32.const 0.5 - f32.mul - f32.const 0.5 + f64.const 2.004168360008973e-292 + f64.mul + local.set $0 + local.get $1 + i32.const 969 + i32.add + local.tee $1 + i32.const -1022 + i32.lt_s + if (result f64) + i32.const -1022 + local.get $1 + i32.const 969 + i32.add + local.tee $1 + local.get $1 + i32.const -1022 + i32.le_s + select + local.set $1 + local.get $0 + f64.const 2.004168360008973e-292 + f64.mul + else + local.get $0 + end + else local.get $0 - f32.div - f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh$21 end - local.get $0 - f32.const -162.88958740234375 - f32.add - call $~lib/math/NativeMathf.exp - f32.const 1661534994731144841129758e11 - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul end local.get $1 - local.get $2 - call $std/math/check + i64.extend_i32_s + i64.const 1023 + i64.add + i64.const 52 + i64.shl + f64.reinterpret_i64 + f64.mul ) - (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 f64) - (local $6 f64) - (local $7 i32) - (local $8 i64) - (local $9 f64) - (local $10 f64) - block $~lib/util/math/exp2_lut|inlined.0 (result f64) + (func $~lib/math/ipow64 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + i64.const 1 + local.set $2 + 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.reinterpret_f64 - local.tee $4 - i64.const 52 - i64.shr_u - i32.wrap_i64 - i32.const 2047 - i32.and - local.tee $3 - i32.const 969 - i32.sub - local.tee $7 - i32.const 63 - i32.ge_u + i64.const -1 + i64.eq if - f64.const 1 - local.get $7 - i32.const -2147483648 - i32.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - local.get $3 - i32.const 1033 - i32.ge_u + 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 - f64.const 0 - local.get $4 - i64.const -4503599627370496 - i64.eq - br_if $~lib/util/math/exp2_lut|inlined.0 - drop local.get $0 - f64.const 1 - f64.add - local.get $3 - i32.const 2047 - i32.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - f64.const inf - local.get $4 - i64.const 0 - i64.ge_s - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - f64.const 0 - local.get $4 - i64.const -4570929321408987136 - i64.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - drop + 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 - local.get $3 - i32.const 0 - local.get $4 + end + end + loop $while-continue|1 + local.get $1 + i64.const 0 + i64.ne + if + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 i64.const 1 - i64.shl - i64.const -9143996093422370816 - i64.le_u + i64.and + i32.wrap_i64 select - local.set $3 + 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 + br $while-continue|1 end - local.get $0 - f64.const 52776558133248 - f64.add - local.tee $5 - 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 $7 - i64.load offset=8 - local.get $8 - i64.const 45 - i64.shl - i64.add + end + local.get $2 + ) + (func $std/math/test_round (param $0 f64) (param $1 f64) (result i32) + (local $2 f64) + local.get $0 + f64.ceil + local.tee $2 + local.get $2 + f64.const -1 + f64.add + local.get $2 + f64.const -0.5 + f64.add + local.get $0 + f64.le + select + local.get $1 + f64.const 0 + call $std/math/check + ) + (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f64) + local.get $1 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $5 + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $4 + i32.gt_u + if + local.get $4 + local.get $5 local.set $4 + local.set $5 + end + local.get $4 + f32.reinterpret_i32 + local.set $0 + block $__inlined_func$~lib/math/NativeMathf.hypot$24 (result f32) + local.get $5 + f32.reinterpret_i32 + local.tee $1 + local.get $5 + i32.const 2139095040 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 + drop + local.get $0 + local.get $1 + f32.add + local.get $5 + i32.eqz + local.get $4 + i32.const 2139095040 + i32.ge_u + i32.or + local.get $4 + local.get $5 + i32.sub + i32.const 209715200 + i32.ge_u + i32.or + br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 + drop + local.get $4 + i32.const 1568669696 + i32.ge_u + if (result f32) + local.get $0 + f32.const 8.077935669463161e-28 + f32.mul + local.set $0 + local.get $1 + f32.const 8.077935669463161e-28 + f32.mul + local.set $1 + f32.const 1237940039285380274899124e3 + else + local.get $5 + i32.const 562036736 + i32.lt_u + if (result f32) + local.get $0 + f32.const 1237940039285380274899124e3 + f32.mul + local.set $0 + local.get $1 + f32.const 1237940039285380274899124e3 + f32.mul + local.set $1 + f32.const 8.077935669463161e-28 + else + f32.const 1 + end + end local.get $0 - local.get $5 - f64.const -52776558133248 - f64.add - f64.sub - local.tee $5 - local.get $5 - f64.mul - local.set $6 + f64.promote_f32 + local.tee $7 local.get $7 - f64.load - local.get $5 - f64.const 0.6931471805599453 - f64.mul - f64.add - local.get $6 - local.get $5 - f64.const 0.0555041086686087 - f64.mul - f64.const 0.24022650695909065 - f64.add - f64.mul - f64.add - local.get $6 - local.get $6 - f64.mul - local.get $5 - f64.const 1.3332074570119598e-03 - f64.mul - f64.const 0.009618131975721055 - f64.add f64.mul - f64.add - local.set $5 - local.get $3 - i32.eqz - if - block $~lib/util/math/specialcase2|inlined.0 (result f64) - local.get $8 - i64.const 2147483648 - i64.and - i64.eqz - if - local.get $4 - i64.const 4503599627370496 - i64.sub - f64.reinterpret_i64 - local.tee $6 - local.get $5 - f64.mul - local.get $6 - f64.add - f64.const 2 - f64.mul - br $~lib/util/math/specialcase2|inlined.0 - end - local.get $4 - i64.const 4602678819172646912 - i64.add - f64.reinterpret_i64 - local.tee $6 - local.get $5 - f64.mul - local.tee $9 - local.get $6 - f64.add - local.tee $10 - f64.const 1 - f64.lt - if (result f64) - local.get $10 - f64.const 1 - f64.add - local.tee $5 - f64.const 1 - local.get $5 - f64.sub - local.get $10 - f64.add - local.get $6 - local.get $10 - f64.sub - local.get $9 - f64.add - f64.add - f64.add - f64.const -1 - f64.add - else - local.get $10 - end - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp2_lut|inlined.0 - end - local.get $4 - f64.reinterpret_i64 - local.tee $6 - local.get $5 + local.get $1 + f64.promote_f32 + local.tee $7 + local.get $7 f64.mul - local.get $6 f64.add + f32.demote_f64 + f32.sqrt + f32.mul end - local.get $1 local.get $2 - call $std/math/check - if (result i32) - f64.const 2 - local.get $0 - call $~lib/bindings/dom/Math.pow - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end + local.get $3 + call $std/math/check ) - (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f64) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - block $~lib/util/math/exp2f_lut|inlined.0 (result f32) + (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) + (local $1 f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 f64) + local.get $0 + f64.promote_f32 + local.set $1 + block $~lib/util/math/expf_lut|inlined.0 (result f32) local.get $0 i32.reinterpret_f32 - local.tee $5 + local.tee $3 i32.const 20 i32.shr_u i32.const 2047 i32.and - local.tee $6 - i32.const 1072 + local.tee $4 + i32.const 1067 i32.ge_u if f32.const 0 - local.get $5 + local.get $3 i32.const -8388608 i32.eq - br_if $~lib/util/math/exp2f_lut|inlined.0 + br_if $~lib/util/math/expf_lut|inlined.0 drop local.get $0 local.get $0 f32.add - local.get $6 + local.get $4 i32.const 2040 i32.ge_u - br_if $~lib/util/math/exp2f_lut|inlined.0 + br_if $~lib/util/math/expf_lut|inlined.0 drop local.get $0 f32.const 1701411834604692317316873e14 f32.mul local.get $0 - f32.const 0 + f32.const 88.72283172607422 f32.gt - br_if $~lib/util/math/exp2f_lut|inlined.0 + br_if $~lib/util/math/expf_lut|inlined.0 drop f32.const 0 local.get $0 - f32.const -150 - f32.le - br_if $~lib/util/math/exp2f_lut|inlined.0 + f32.const -103.97207641601562 + f32.lt + br_if $~lib/util/math/expf_lut|inlined.0 drop end - local.get $0 - f64.promote_f32 - local.tee $3 - f64.const 211106232532992 + local.get $1 + f64.const 46.16624130844683 + f64.mul + local.tee $1 + f64.const 6755399441055744 f64.add - local.tee $7 + local.tee $5 i64.reinterpret_f64 - local.set $4 - local.get $3 - local.get $7 - f64.const -211106232532992 + local.set $2 + local.get $1 + local.get $5 + f64.const -6755399441055744 f64.add f64.sub - local.tee $3 - f64.const 0.6931471806916203 + local.tee $1 + f64.const 0.021660849396613134 f64.mul f64.const 1 f64.add - local.get $3 - f64.const 0.05550361559341535 + local.get $1 + f64.const 1.6938359250920212e-06 f64.mul - f64.const 0.2402284522445722 + f64.const 2.3459809789509004e-04 f64.add - local.get $3 - local.get $3 + local.get $1 + local.get $1 f64.mul f64.mul f64.add - local.get $4 + local.get $2 i32.wrap_i64 i32.const 31 i32.and @@ -5822,7 +6398,7 @@ i32.const 7712 i32.add i64.load - local.get $4 + local.get $2 i64.const 47 i64.shl i64.add @@ -5830,487 +6406,406 @@ f64.mul f32.demote_f64 end - local.get $1 + ) + (func $std/math/test_roundf (param $0 f32) (param $1 f32) (result i32) + (local $2 f32) + local.get $0 + f32.ceil + local.tee $2 + local.get $2 + f32.const -1 + f32.add local.get $2 + f32.const -0.5 + f32.add + local.get $0 + f32.le + select + local.get $1 + f32.const 0 call $std/math/check ) - (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - (local $4 i64) + (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) + (local $1 i32) + (local $2 f64) + (local $3 i32) + (local $4 i32) (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - local.get $1 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $5 + (local $6 f64) + (local $7 f64) + (local $8 f64) local.get $0 i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - i64.gt_u + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $3 + local.get $5 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $4 + local.get $3 + i32.const 1078159482 + i32.ge_u if + local.get $0 + local.get $0 + f64.ne + if + local.get $0 + return + end local.get $4 - local.get $5 - local.set $4 - local.set $5 + if + f64.const -1 + return + end + local.get $0 + f64.const 709.782712893384 + f64.gt + if + local.get $0 + f64.const 8988465674311579538646525e283 + f64.mul + return + end end - local.get $5 - f64.reinterpret_i64 - local.tee $9 - local.set $0 - block $__inlined_func$~lib/math/NativeMath.hypot$23 - local.get $5 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $7 - i32.const 2047 - i32.eq - br_if $__inlined_func$~lib/math/NativeMath.hypot$23 - local.get $4 - f64.reinterpret_i64 - local.tee $1 - local.set $0 - local.get $5 - i64.eqz + local.get $3 + i32.const 1071001154 + i32.gt_u + if + local.get $0 + i32.const 1 local.get $4 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 2047 - i32.eq - i32.or - br_if $__inlined_func$~lib/math/NativeMath.hypot$23 - local.get $1 - local.get $9 - f64.add - local.set $0 - local.get $8 - local.get $7 + i32.const 1 + i32.shl i32.sub - i32.const 64 - i32.gt_s - br_if $__inlined_func$~lib/math/NativeMath.hypot$23 - f64.const 1 - local.set $0 - local.get $8 - i32.const 1533 - i32.gt_u - if (result f64) - f64.const 5260135901548373507240989e186 - local.set $0 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - local.get $9 - f64.const 1.90109156629516e-211 - f64.mul - else - local.get $7 - i32.const 573 - i32.lt_u - if (result f64) - f64.const 1.90109156629516e-211 - local.set $0 - local.get $1 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $1 - local.get $9 - f64.const 5260135901548373507240989e186 - f64.mul - else - local.get $9 - end - end - local.set $11 - local.get $1 - local.get $1 - local.get $1 - f64.const 134217729 + local.get $0 + f64.const 1.4426950408889634 f64.mul - local.tee $9 - f64.sub - local.get $9 + f64.const 0.5 + local.get $0 + f64.copysign f64.add - local.tee $9 + i32.trunc_sat_f64_s + local.get $3 + i32.const 1072734898 + i32.lt_u + select + local.tee $1 + f64.convert_i32_s + local.tee $0 + f64.const 0.6931471803691238 + f64.mul f64.sub - local.set $12 - local.get $11 - local.get $11 - local.get $11 - f64.const 134217729 + local.tee $2 + local.get $2 + local.get $0 + f64.const 1.9082149292705877e-10 f64.mul - local.tee $10 + local.tee $2 f64.sub - local.get $10 - f64.add - local.tee $10 + local.tee $0 f64.sub - local.set $13 + local.get $2 + f64.sub + local.set $2 + else + local.get $3 + i32.const 1016070144 + i32.lt_u + if + local.get $0 + return + end + end + local.get $0 + local.get $0 + f64.const 0.5 + f64.mul + local.tee $7 + f64.mul + local.tee $6 + local.get $6 + f64.mul + local.set $8 + f64.const 3 + local.get $6 + f64.const -0.03333333333333313 + f64.mul + f64.const 1 + f64.add + local.get $8 + local.get $6 + f64.const -7.93650757867488e-05 + f64.mul + f64.const 1.5873015872548146e-03 + f64.add + local.get $8 + local.get $6 + f64.const -2.0109921818362437e-07 + f64.mul + f64.const 4.008217827329362e-06 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $8 + local.get $7 + f64.mul + f64.sub + local.set $7 + local.get $6 + local.get $8 + local.get $7 + f64.sub + f64.const 6 + local.get $0 + local.get $7 + f64.mul + f64.sub + f64.div + f64.mul + local.set $7 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + local.get $7 + f64.mul + local.get $6 + f64.sub + f64.sub + return + end + local.get $0 + local.get $7 + local.get $2 + f64.sub + f64.mul + local.get $2 + f64.sub + local.get $6 + f64.sub + local.set $2 + local.get $1 + i32.const -1 + i32.eq + if + local.get $0 + local.get $2 + f64.sub + f64.const 0.5 + f64.mul + f64.const -0.5 + f64.add + return + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + f64.const -0.25 + f64.lt + if + local.get $2 + local.get $0 + f64.const 0.5 + f64.add + f64.sub + f64.const -2 + f64.mul + return + end local.get $0 - local.get $10 - local.get $10 - f64.mul - local.get $11 - local.get $11 - f64.mul - local.tee $0 + local.get $2 f64.sub - local.get $10 - local.get $10 - f64.add - local.get $13 - f64.add - local.get $13 + f64.const 2 f64.mul + f64.const 1 f64.add - local.get $9 - local.get $9 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $1 + return + end + local.get $1 + i64.extend_i32_s + i64.const 1023 + i64.add + i64.const 52 + i64.shl + f64.reinterpret_i64 + local.set $6 + local.get $1 + i32.const 0 + i32.lt_s + local.get $1 + i32.const 56 + i32.gt_s + i32.or + if + local.get $0 + local.get $2 f64.sub - local.get $9 - local.get $9 + f64.const 1 f64.add - local.get $12 + local.tee $0 + local.get $0 f64.add - local.get $12 + f64.const 8988465674311579538646525e283 f64.mul - f64.add - f64.add local.get $0 - f64.add + local.get $6 + f64.mul local.get $1 + i32.const 1024 + i32.eq + select + f64.const -1 f64.add - f64.sqrt - f64.mul - local.set $0 + return end local.get $0 + f64.const 1 + i64.const 1023 + local.get $1 + i64.extend_i32_s + i64.sub + i64.const 52 + i64.shl + f64.reinterpret_i64 + local.tee $0 + f64.sub local.get $2 - local.get $3 - call $std/math/check + f64.sub + f64.const 1 + local.get $2 + local.get $0 + f64.add + f64.sub + local.get $1 + i32.const 20 + i32.lt_s + select + f64.add + local.get $6 + f64.mul ) - (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) + (func $std/math/test_atanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - local.get $1 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $5 + local.get $0 + f32.abs + local.set $3 local.get $0 i32.reinterpret_f32 - i32.const 2147483647 - i32.and local.tee $4 - i32.gt_u - if - local.get $4 - local.get $5 - local.set $4 - local.set $5 - end - local.get $4 - f32.reinterpret_i32 - local.set $0 - block $__inlined_func$~lib/math/NativeMathf.hypot$24 (result f32) - local.get $5 - f32.reinterpret_i32 - local.tee $1 - local.get $5 - i32.const 2139095040 - i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 - drop - local.get $0 - local.get $1 - f32.add - local.get $5 - i32.eqz - local.get $4 - i32.const 2139095040 - i32.ge_u - i32.or - local.get $4 - local.get $5 - i32.sub - i32.const 209715200 - i32.ge_u - i32.or - br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 - drop + i32.const 1056964608 + i32.lt_u + if (result f32) local.get $4 - i32.const 1568669696 + i32.const 796917760 i32.ge_u if (result f32) - local.get $0 - f32.const 8.077935669463161e-28 + local.get $3 + local.get $3 + f32.add + local.get $3 + f32.const 1 + local.get $3 + f32.sub + f32.div + f32.const 1 + f32.add f32.mul - local.set $0 - local.get $1 - f32.const 8.077935669463161e-28 + call $~lib/math/NativeMathf.log1p + f32.const 0.5 f32.mul - local.set $1 - f32.const 1237940039285380274899124e3 else - local.get $5 - i32.const 562036736 - i32.lt_u - if (result f32) - local.get $0 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $0 - local.get $1 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $1 - f32.const 8.077935669463161e-28 - else - f32.const 1 - end + local.get $3 end - local.get $0 - f64.promote_f32 - local.tee $7 - local.get $7 - f64.mul - local.get $1 - f64.promote_f32 - local.tee $7 - local.get $7 - f64.mul - f64.add - f32.demote_f64 - f32.sqrt + else + local.get $3 + f32.const 1 + local.get $3 + f32.sub + f32.div + f32.const 2 + f32.mul + call $~lib/math/NativeMathf.log1p + f32.const 0.5 f32.mul end + local.get $0 + f32.copysign + local.get $1 local.get $2 - local.get $3 call $std/math/check ) - (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - block $__inlined_func$~lib/math/NativeMath.log10$1 (result f64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 31 - i32.shr_u - local.tee $6 + (func $std/math/test_atanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + local.get $0 + f64.abs + local.set $5 + local.get $0 + i64.reinterpret_f64 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $3 + i64.const 1022 + i64.lt_u + if (result f64) local.get $3 - i32.const 1048576 - i32.lt_u - i32.or - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div + i64.const 991 + i64.ge_u + if (result f64) + local.get $5 + local.get $5 + f64.add + local.tee $4 local.get $4 - i64.const 1 - i64.shl - i64.eqz - br_if $__inlined_func$~lib/math/NativeMath.log10$1 - drop - local.get $0 - local.get $0 + local.get $5 + f64.mul + f64.const 1 + local.get $5 f64.sub - f64.const 0 f64.div - local.get $6 - br_if $__inlined_func$~lib/math/NativeMath.log10$1 - drop - i32.const -54 - local.set $5 - local.get $0 - f64.const 18014398509481984 + f64.add + call $~lib/math/NativeMath.log1p + f64.const 0.5 f64.mul - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $3 else - local.get $3 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - br $__inlined_func$~lib/math/NativeMath.log10$1 - else - f64.const 0 - local.get $4 - i64.const 32 - i64.shl - i64.eqz - local.get $3 - i32.const 1072693248 - i32.eq - i32.and - br_if $__inlined_func$~lib/math/NativeMath.log10$1 - drop - end + local.get $5 end - local.get $4 - i64.const 4294967295 - i64.and - local.get $3 - i32.const 614242 - i32.add - local.tee $3 - 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.add - local.tee $7 - f64.const 0.5 - f64.mul - local.get $7 - f64.mul - local.set $8 - local.get $7 - local.get $7 - f64.const 2 - f64.add - f64.div - local.tee $9 - local.get $9 - f64.mul - local.tee $10 - local.get $10 - f64.mul - local.set $11 - local.get $7 - local.get $7 - local.get $8 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $12 - f64.sub - local.get $8 - f64.sub - local.get $9 - local.get $8 - local.get $10 - local.get $11 - local.get $11 - local.get $11 - 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 $11 - local.get $11 - local.get $11 - 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.set $8 + else local.get $5 - local.get $3 - 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 $12 - 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 $8 - local.get $12 - f64.add - f64.const 2.5082946711645275e-11 + f64.const 1 + local.get $5 + f64.sub + f64.div + f64.const 2 f64.mul - f64.add - local.get $8 - f64.const 0.4342944818781689 + call $~lib/math/NativeMath.log1p + f64.const 0.5 f64.mul - f64.add - local.get $10 - local.get $7 - f64.sub - local.get $11 - f64.add - f64.add - local.get $7 - f64.add end + local.get $0 + f64.copysign local.get $1 local.get $2 call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/dom/Math.log10 + call $~lib/bindings/dom/Math.atanh local.get $1 local.get $2 call $std/math/check @@ -6318,73 +6813,113 @@ i32.const 0 end ) - (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) + (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) + (local $1 f32) + (local $2 i32) + (local $3 f32) (local $4 i32) (local $5 f32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 f32) - (local $10 f32) - block $__inlined_func$~lib/math/NativeMathf.log10$25 (result f32) + (local $6 f32) + i32.const 1 + local.set $2 + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 31 + i32.shr_u + local.get $4 + i32.const 1054086096 + i32.lt_u + i32.or + if + local.get $4 + i32.const -1082130432 + i32.ge_u + if + local.get $0 + f32.const -1 + f32.eq + if + local.get $0 + f32.const 0 + f32.div + return + end + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.div + return + end + local.get $4 + i32.const 1 + i32.shl + i32.const 1728053248 + i32.lt_u + if + local.get $0 + return + end + local.get $4 + i32.const -1097468391 + i32.le_u + if (result f32) + i32.const 0 + local.set $2 + local.get $0 + else + f32.const 0 + end + local.set $1 + else + local.get $4 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + return + end + end + local.get $2 + if local.get $0 + f32.const 1 + f32.add + local.tee $1 i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_u + i32.const 4913933 + i32.add local.tee $4 - local.get $3 - i32.const 8388608 - i32.lt_u - i32.or - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - local.get $3 - i32.const 1 - i32.shl - i32.eqz - br_if $__inlined_func$~lib/math/NativeMathf.log10$25 - drop + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + local.tee $2 + i32.const 25 + i32.lt_s + if (result f32) + f32.const 1 + local.get $1 local.get $0 + f32.sub + f32.sub local.get $0 + local.get $1 + f32.const -1 + f32.add f32.sub - f32.const 0 + local.get $2 + i32.const 2 + i32.ge_s + select + local.get $1 f32.div - local.get $4 - br_if $__inlined_func$~lib/math/NativeMathf.log10$25 - drop - i32.const -25 - local.set $6 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $3 else - local.get $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - br $__inlined_func$~lib/math/NativeMathf.log10$25 - else - f32.const 0 - local.get $3 - i32.const 1065353216 - i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.log10$25 - drop - end + f32.const 0 end - local.get $3 - i32.const 4913933 - i32.add - local.tee $3 + local.set $3 + local.get $4 i32.const 8388607 i32.and i32.const 1060439283 @@ -6392,188 +6927,606 @@ f32.reinterpret_i32 f32.const -1 f32.add - local.tee $8 - local.get $8 - f32.const 2 - f32.add - f32.div - local.tee $0 - local.get $0 - f32.mul - local.tee $5 + local.set $1 + end + local.get $1 + local.get $1 + f32.const 2 + f32.add + f32.div + local.tee $5 + local.get $5 + f32.mul + local.tee $0 + local.get $0 + f32.mul + local.set $6 + local.get $5 + local.get $1 + f32.const 0.5 + f32.mul + local.get $1 + f32.mul + local.tee $5 + local.get $0 + local.get $6 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $6 + local.get $6 + f32.const 0.24279078841209412 + f32.mul + f32.const 0.40000972151756287 + f32.add + f32.mul + f32.add + f32.add + f32.mul + local.get $2 + f32.convert_i32_s + local.tee $0 + f32.const 9.05800061445916e-06 + f32.mul + local.get $3 + f32.add + f32.add + local.get $5 + f32.sub + local.get $1 + f32.add + local.get $0 + f32.const 0.6931381225585938 + f32.mul + f32.add + ) + (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) + (local $1 i32) + (local $2 f32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 f32) + (local $7 f32) + local.get $0 + i32.reinterpret_f32 + local.tee $5 + i32.const 2147483647 + i32.and + local.set $3 + local.get $5 + i32.const 31 + i32.shr_u + local.set $5 + local.get $3 + i32.const 1100331076 + i32.ge_u + if + local.get $3 + i32.const 2139095040 + i32.gt_u + if + local.get $0 + return + end local.get $5 - f32.mul - local.set $9 - local.get $6 + if + f32.const -1 + return + end local.get $3 - i32.const 23 - i32.shr_u - i32.const 127 + i32.const 1118925335 + i32.gt_u + if + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + return + end + end + local.get $3 + i32.const 1051816472 + i32.gt_u + if + local.get $0 + i32.const 1 + local.get $5 + i32.const 1 + i32.shl i32.sub - i32.add - f32.convert_i32_s - local.tee $7 - f32.const 7.903415166765626e-07 + local.get $0 + f32.const 1.4426950216293335 f32.mul - local.get $8 - local.get $8 - local.get $8 f32.const 0.5 + local.get $0 + f32.copysign + f32.add + i32.trunc_sat_f32_s + local.get $3 + i32.const 1065686418 + i32.lt_u + select + local.tee $1 + f32.convert_i32_s + local.tee $0 + f32.const 0.6931381225585938 f32.mul - local.get $8 + f32.sub + local.tee $2 + local.get $2 + local.get $0 + f32.const 9.05800061445916e-06 f32.mul - local.tee $8 + local.tee $2 f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $10 + local.tee $0 f32.sub - local.get $8 + local.get $2 f32.sub + local.set $2 + else + local.get $3 + i32.const 855638016 + i32.lt_u + if + local.get $0 + return + end + end + f32.const 3 + local.get $0 + local.get $0 + f32.const 0.5 + f32.mul + local.tee $6 + f32.mul + local.tee $4 + local.get $4 + f32.const 1.5807170420885086e-03 + f32.mul + f32.const -0.03333321213722229 + f32.add + f32.mul + f32.const 1 + f32.add + local.tee $7 + local.get $6 + f32.mul + f32.sub + local.set $6 + local.get $4 + local.get $7 + local.get $6 + f32.sub + f32.const 6 + local.get $0 + local.get $6 + f32.mul + f32.sub + f32.div + f32.mul + local.set $6 + local.get $1 + i32.eqz + if local.get $0 - local.get $8 - local.get $5 - local.get $9 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add + local.get $0 + local.get $6 f32.mul - local.get $9 - local.get $9 - f32.const 0.24279078841209412 + local.get $4 + f32.sub + f32.sub + return + end + local.get $0 + local.get $6 + local.get $2 + f32.sub + f32.mul + local.get $2 + f32.sub + local.get $4 + f32.sub + local.set $2 + local.get $1 + i32.const -1 + i32.eq + if + local.get $0 + local.get $2 + f32.sub + f32.const 0.5 f32.mul - f32.const 0.40000972151756287 + f32.const -0.5 f32.add + return + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + f32.const -0.25 + f32.lt + if + local.get $2 + local.get $0 + f32.const 0.5 + f32.add + f32.sub + f32.const -2 + f32.mul + return + end + local.get $0 + local.get $2 + f32.sub + f32.const 2 f32.mul + f32.const 1 f32.add - f32.add - f32.mul + return + end + local.get $1 + i32.const 127 + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.set $4 + local.get $1 + i32.const 0 + i32.lt_s + local.get $1 + i32.const 56 + i32.gt_s + i32.or + if + local.get $0 + local.get $2 + f32.sub + f32.const 1 f32.add local.tee $0 - local.get $10 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add local.get $0 - f32.const 0.434326171875 - f32.mul f32.add - local.get $10 - f32.const 0.434326171875 + f32.const 1701411834604692317316873e14 f32.mul - f32.add - local.get $7 - f32.const 0.3010292053222656 + local.get $0 + local.get $4 f32.mul + local.get $1 + i32.const 128 + i32.eq + select + f32.const -1 f32.add + return + end + local.get $0 + f32.const 1 + i32.const 127 + local.get $1 + i32.sub + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.tee $0 + f32.sub + local.get $2 + f32.sub + f32.const 1 + local.get $2 + local.get $0 + f32.add + f32.sub + local.get $1 + i32.const 20 + i32.lt_s + select + f32.add + local.get $4 + f32.mul + ) + (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 i32) + (local $6 f64) + (local $7 f64) + i32.const 1 + local.set $2 + local.get $0 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 31 + i32.shr_u + local.get $5 + i32.const 1071284858 + i32.lt_u + i32.or + if + local.get $5 + i32.const -1074790400 + i32.ge_u + if + local.get $0 + f64.const -1 + f64.eq + if + local.get $0 + f64.const 0 + f64.div + return + end + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.div + return + end + local.get $5 + i32.const 1 + i32.shl + i32.const 2034237440 + i32.lt_u + if + local.get $0 + return + end + local.get $5 + i32.const -1076707644 + i32.le_u + if (result f64) + i32.const 0 + local.set $2 + local.get $0 + else + f64.const 0 + end + local.set $1 + else + local.get $5 + i32.const 2146435072 + i32.ge_u + if + local.get $0 + return + end + end + local.get $2 + if + local.get $0 + f64.const 1 + f64.add + i64.reinterpret_f64 + local.tee $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 614242 + i32.add + local.tee $5 + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + local.tee $2 + i32.const 54 + i32.lt_s + if (result f64) + f64.const 1 + local.get $3 + f64.reinterpret_i64 + local.tee $1 + local.get $0 + f64.sub + f64.sub + local.get $0 + local.get $1 + f64.const -1 + f64.add + f64.sub + local.get $2 + i32.const 2 + i32.ge_s + select + local.get $1 + f64.div + else + f64.const 0 + end + local.set $4 + local.get $3 + i64.const 4294967295 + i64.and + local.get $5 + 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.add + local.set $1 end local.get $1 + local.get $1 + f64.const 2 + f64.add + f64.div + local.tee $6 + local.get $6 + f64.mul + local.tee $7 + local.get $7 + f64.mul + local.set $0 + local.get $6 + local.get $1 + f64.const 0.5 + f64.mul + local.get $1 + f64.mul + local.tee $6 + local.get $7 + local.get $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 $2 - call $std/math/check + f64.convert_i32_s + local.tee $0 + f64.const 1.9082149292705877e-10 + f64.mul + local.get $4 + f64.add + f64.add + local.get $6 + f64.sub + local.get $1 + f64.add + local.get $0 + f64.const 0.6931471803691238 + f64.mul + f64.add ) - (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) + (func $~lib/math/NativeMath.log (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 i64) (local $4 f64) (local $5 f64) (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 i32) - block $~lib/util/math/log2_lut|inlined.0 (result f64) + (local $7 i32) + block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 i64.reinterpret_f64 local.tee $1 - i64.const 4606800540372828160 + i64.const 4606619468846596096 i64.sub - i64.const 581272283906048 + i64.const 854320534781952 i64.lt_u if local.get $0 f64.const -1 f64.add - local.tee $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $6 - f64.const 1.4426950407214463 - f64.mul - local.set $7 - local.get $5 - local.get $5 + local.tee $0 + local.get $0 f64.mul - local.tee $8 - local.get $8 + local.tee $4 + local.get $0 f64.mul - local.set $0 - local.get $7 - local.get $8 - local.get $5 - f64.const 0.48089834696298744 + local.tee $5 + local.get $0 + f64.const -0.24999999999998432 f64.mul - f64.const -0.7213475204444817 + f64.const 0.3333333333333352 f64.add + local.get $4 + f64.const 0.19999999999320328 f64.mul - local.tee $4 f64.add - local.tee $9 local.get $5 - local.get $6 - f64.sub - f64.const 1.4426950407214463 + local.get $0 + f64.const 0.14285715076560868 + f64.mul + f64.const -0.16666666669929706 + f64.add + local.get $4 + f64.const -0.12499997863982555 f64.mul + f64.add local.get $5 - f64.const 1.6751713164886512e-10 + local.get $0 + f64.const -0.10000486757818193 f64.mul + f64.const 0.11110712032936046 f64.add - local.get $7 - local.get $9 - f64.sub local.get $4 + f64.const 0.09181994006195467 + f64.mul f64.add - f64.add - local.get $0 local.get $5 - f64.const 0.2885390081805197 + f64.const -0.08328363062289341 f64.mul - f64.const -0.360673760222145 f64.add - local.get $8 - local.get $5 - f64.const 0.2060992861022954 f64.mul - f64.const -0.24044917405728863 f64.add f64.mul f64.add + f64.mul local.get $0 - local.get $5 - f64.const 0.1603032746063156 + local.get $0 + local.get $0 + local.get $0 + f64.const 134217728 f64.mul - f64.const -0.18033596705327856 + local.tee $4 f64.add - local.get $8 - local.get $5 - f64.const 0.13046826811283835 + local.get $4 + f64.sub + local.tee $4 + local.get $4 f64.mul - f64.const -0.14483316576701266 - f64.add + f64.const -0.5 f64.mul + local.tee $5 + f64.add + local.tee $6 + f64.sub + local.get $5 f64.add + local.get $0 + local.get $4 + f64.sub + f64.const -0.5 f64.mul + local.get $4 + local.get $0 f64.add f64.mul f64.add f64.add - br $~lib/util/math/log2_lut|inlined.0 + local.get $6 + f64.add + br $~lib/util/math/log_lut|inlined.0 end local.get $1 i64.const 48 @@ -6594,13 +7547,13 @@ i64.const 1 i64.shl i64.eqz - br_if $~lib/util/math/log2_lut|inlined.0 + br_if $~lib/util/math/log_lut|inlined.0 drop local.get $0 local.get $1 i64.const 9218868437227405312 i64.eq - br_if $~lib/util/math/log2_lut|inlined.0 + br_if $~lib/util/math/log_lut|inlined.0 drop i32.const 1 local.get $2 @@ -6619,7 +7572,7 @@ local.tee $0 local.get $0 f64.div - br $~lib/util/math/log2_lut|inlined.0 + br $~lib/util/math/log_lut|inlined.0 end local.get $0 f64.const 4503599627370496 @@ -6633,25 +7586,28 @@ i64.const 4604367669032910848 i64.sub local.tee $3 - i64.const 46 + i64.const 45 i64.shr_u - i64.const 63 + i64.const 127 i64.and i32.wrap_i64 i32.const 4 i32.shl local.tee $2 - i32.const 7968 + i32.const 1088 i32.add - local.set $10 + local.set $7 local.get $3 i64.const 52 i64.shr_s f64.convert_i64_s - local.get $10 + local.tee $0 + f64.const 0.6931471805598903 + f64.mul + local.get $7 f64.load offset=8 f64.add - local.tee $0 + local.tee $4 local.get $1 local.get $3 i64.const -4503599627370496 @@ -6659,7 +7615,7 @@ i64.sub f64.reinterpret_i64 local.get $2 - i32.const 8992 + i32.const 3136 i32.add local.tee $2 f64.load @@ -6667,101 +7623,323 @@ local.get $2 f64.load offset=8 f64.sub - local.get $10 + local.get $7 f64.load f64.mul - local.tee $4 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 local.tee $5 - f64.const 1.4426950407214463 - f64.mul - local.tee $6 - f64.add - local.set $7 - local.get $0 - local.get $7 - f64.sub - local.get $6 f64.add + local.set $6 local.get $4 - local.get $5 + local.get $6 f64.sub - f64.const 1.4426950407214463 - f64.mul - local.get $4 - f64.const 1.6751713164886512e-10 - f64.mul + local.get $5 f64.add + local.get $0 + f64.const 5.497923018708371e-14 + f64.mul f64.add - local.get $4 - local.get $4 + local.get $5 + local.get $5 f64.mul local.tee $0 - local.get $4 - f64.const 0.4808983469629985 + f64.const -0.5000000000000001 f64.mul - f64.const -0.7213475204444882 f64.add + local.get $5 local.get $0 - local.get $4 - f64.const 0.2885390073180969 f64.mul - f64.const -0.36067375954075914 - f64.add + local.get $5 + f64.const -0.2499999999622955 f64.mul + f64.const 0.33333333331825593 f64.add local.get $0 - local.get $0 - f64.mul - local.get $4 - f64.const 0.2061202382173603 + local.get $5 + f64.const -0.16667054827627667 f64.mul - f64.const -0.2404693555628422 + f64.const 0.20000304511814496 f64.add f64.mul f64.add f64.mul f64.add - local.get $7 + local.get $6 + f64.add + end + ) + (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1065353216 + i32.ge_u + if + local.get $1 + i32.const 1065353216 + i32.eq + if + f32.const 3.141592502593994 + f32.const 0 + local.get $2 + i32.const 0 + i32.lt_s + select + return + end + f32.const 0 + local.get $0 + local.get $0 + f32.sub + f32.div + return + end + local.get $1 + i32.const 1056964608 + i32.lt_u + if + local.get $1 + i32.const 847249408 + i32.le_u + if + f32.const 1.570796251296997 + return + end + 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 + return + end + local.get $2 + i32.const 0 + i32.lt_s + 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.add + f32.add + f32.sub + f32.const 2 + f32.mul + return + end + f32.const 0.5 + local.get $0 + f32.const 0.5 + f32.mul + f32.sub + local.tee $3 + f32.sqrt + local.tee $4 + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $0 + local.get $3 + local.get $3 + local.get $3 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $3 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + local.get $4 + f32.mul + local.get $3 + local.get $0 + local.get $0 + f32.mul + f32.sub + local.get $4 + local.get $0 + f32.add + f32.div + f32.add + f32.add + f32.const 2 + f32.mul + ) + (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 f64) + (local $4 i64) + block $__inlined_func$~lib/math/NativeMath.acosh$8 (result f64) + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.div + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 4607182418800017408 + i64.lt_s + br_if $__inlined_func$~lib/math/NativeMath.acosh$8 + drop + local.get $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $4 + i64.const 1024 + i64.lt_u + if + local.get $0 + f64.const -1 + f64.add + local.tee $3 + local.get $3 + local.get $3 + f64.mul + local.get $3 + local.get $3 + f64.add + f64.add + f64.sqrt + f64.add + call $~lib/math/NativeMath.log1p + br $__inlined_func$~lib/math/NativeMath.acosh$8 + end + local.get $4 + i64.const 1049 + i64.lt_u + if + local.get $0 + local.get $0 + f64.add + f64.const 1 + local.get $0 + local.get $0 + local.get $0 + f64.mul + f64.const -1 + f64.add + f64.sqrt + f64.add + f64.div + f64.sub + call $~lib/math/NativeMath.log + br $__inlined_func$~lib/math/NativeMath.acosh$8 + end + local.get $0 + call $~lib/math/NativeMath.log + f64.const 0.6931471805599453 f64.add end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.acosh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + 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 f64) - (local $6 i32) - (local $7 i32) - block $~lib/util/math/log2f_lut|inlined.0 (result f32) + (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) + (local $1 i32) + (local $2 f64) + (local $3 f64) + (local $4 i32) + (local $5 i32) + block $~lib/util/math/logf_lut|inlined.0 (result f32) local.get $0 i32.reinterpret_f32 - local.tee $3 + local.tee $1 i32.const 8388608 i32.sub i32.const 2130706432 i32.ge_u if f32.const -inf - local.get $3 + local.get $1 i32.const 1 i32.shl - local.tee $6 + local.tee $4 i32.eqz - br_if $~lib/util/math/log2f_lut|inlined.0 + br_if $~lib/util/math/logf_lut|inlined.0 drop local.get $0 - local.get $3 + local.get $1 i32.const 2139095040 i32.eq - br_if $~lib/util/math/log2f_lut|inlined.0 + br_if $~lib/util/math/logf_lut|inlined.0 drop - local.get $3 + local.get $1 i32.const 31 i32.shr_u - local.get $6 + local.get $4 i32.const -16777216 i32.ge_u i32.or @@ -6772,7 +7950,7 @@ local.tee $0 local.get $0 f32.div - br $~lib/util/math/log2f_lut|inlined.0 + br $~lib/util/math/logf_lut|inlined.0 end local.get $0 f32.const 8388608 @@ -6780,3221 +7958,2310 @@ i32.reinterpret_f32 i32.const 192937984 i32.sub - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.const 1060306944 i32.sub - local.tee $6 + local.tee $4 i32.const 19 i32.shr_u i32.const 15 i32.and i32.const 4 i32.shl - i32.const 10016 + i32.const 5184 i32.add - local.set $7 - local.get $3 - local.get $6 - i32.const -8388608 - i32.and - i32.sub - f32.reinterpret_i32 - f64.promote_f32 - local.get $7 - f64.load - f64.mul - f64.const -1 - f64.add - local.tee $4 - local.get $4 - f64.mul local.set $5 - local.get $4 - f64.const 0.4811247078767291 - f64.mul - f64.const -0.7213476299867769 - f64.add - local.get $5 - f64.const -0.36051725506874704 - f64.mul - f64.add - local.get $5 - f64.mul - local.get $4 - f64.const 1.4426950186867042 - f64.mul - local.get $7 - f64.load offset=8 - local.get $6 - i32.const 23 - i32.shr_s - f64.convert_i32_s - f64.add - f64.add - f64.add - f32.demote_f64 - end - local.get $1 - local.get $2 - call $std/math/check - ) - (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/dom/Math.max - local.get $2 - f64.const 0 - call $std/math/check - else - i32.const 0 - 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/dom/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 f64) - (local $9 i64) - (local $10 i64) - block $__inlined_func$~lib/math/NativeMath.mod$2 (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$2 - drop - local.get $1 - i64.reinterpret_f64 - local.tee $7 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $9 - local.get $7 - i64.const 1 - i64.shl - local.tee $5 - i64.eqz - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $10 - i64.const 2047 - i64.eq - i32.or - local.get $1 - local.get $1 - f64.ne - i32.or - if - local.get $0 - local.get $1 - f64.mul - local.tee $8 - local.get $8 - f64.div - br $__inlined_func$~lib/math/NativeMath.mod$2 - end - local.get $4 - i64.const 1 - i64.shl - local.tee $3 - local.get $5 - i64.le_u - if - local.get $0 - local.get $3 - local.get $5 - i64.ne - f64.convert_i32_u - f64.mul - br $__inlined_func$~lib/math/NativeMath.mod$2 - end - local.get $4 - i64.const 63 - i64.shr_u - local.set $6 - local.get $10 - i64.eqz - if (result i64) - local.get $4 - i64.const 1 - local.get $10 - local.get $4 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $10 - i64.sub - i64.shl - else - local.get $4 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $3 - local.get $9 - i64.eqz - if (result i64) - local.get $7 - i64.const 1 - local.get $9 - local.get $7 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $9 - i64.sub - i64.shl - else - local.get $7 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $4 - loop $while-continue|0 - local.get $9 - local.get $10 - i64.lt_s - if - local.get $3 - local.get $4 - i64.ge_u - if (result i64) - local.get $0 - f64.const 0 - f64.mul - local.get $3 - local.get $4 - i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$2 - drop - local.get $3 - local.get $4 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $10 - i64.const 1 - i64.sub - local.set $10 - br $while-continue|0 - end - end - local.get $3 - local.get $4 - i64.ge_u - if - local.get $0 - f64.const 0 - f64.mul - local.get $3 - local.get $4 - i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$2 - drop - local.get $3 - local.get $4 - i64.sub - local.set $3 - end - local.get $10 - local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $5 - i64.sub - local.set $4 - local.get $3 - local.get $5 - i64.shl - local.set $3 - local.get $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 $6 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - end - 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 $6 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $7 - local.get $6 - i32.const 1 - i32.shl - local.tee $4 - i32.eqz - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $8 - i32.const 255 - i32.eq - i32.or - local.get $1 - local.get $1 - f32.ne - i32.or - if - local.get $0 local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - return - end - local.get $3 - i32.const 1 - i32.shl - local.tee $2 - local.get $4 - i32.le_u - if - local.get $0 - local.get $2 local.get $4 - i32.ne - f32.convert_i32_u - f32.mul - return - end - local.get $3 - i32.const -2147483648 - i32.and - local.set $5 - local.get $8 - 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 $8 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $8 - i32.sub - i32.shl - end - local.set $2 - local.get $7 - if (result i32) - local.get $6 - i32.const 8388607 + i32.const -8388608 i32.and - i32.const 8388608 - i32.or - else - local.get $6 - i32.const 1 - local.get $7 - local.get $6 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $7 - i32.sub - i32.shl - end - local.set $3 - loop $while-continue|0 - local.get $7 - local.get $8 - i32.lt_s - if - local.get $2 - local.get $3 - i32.ge_u - if (result i32) - local.get $2 - local.get $3 - i32.eq - if - local.get $0 - f32.const 0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - else - local.get $2 - end - i32.const 1 - i32.shl - local.set $2 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i32.ge_u - if + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $5 + f64.load + f64.mul + f64.const -1 + f64.add + local.tee $2 local.get $2 - local.get $3 - i32.eq - if - local.get $0 - f32.const 0 - f32.mul - return - end + f64.mul + local.set $3 local.get $2 + f64.const 0.333456765744066 + f64.mul + f64.const -0.4999997485802103 + f64.add local.get $3 - i32.sub - local.set $2 - end - local.get $8 - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $4 - i32.sub - local.set $3 - local.get $2 - local.get $4 - i32.shl - local.set $2 - local.get $3 - i32.const 0 - i32.gt_s - if (result i32) - local.get $2 - i32.const 8388608 - i32.sub + f64.const -0.25089342214237154 + f64.mul + f64.add local.get $3 + f64.mul + local.get $5 + f64.load offset=8 + local.get $4 i32.const 23 - i32.shl - i32.or - else + i32.shr_s + f64.convert_i32_s + f64.const 0.6931471805599453 + f64.mul + f64.add local.get $2 - i32.const 1 - local.get $3 - i32.sub - i32.shr_u + f64.add + f64.add + f32.demote_f64 end - local.get $5 - i32.or - f32.reinterpret_i32 ) - (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i64) - (local $12 i64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 i32) - local.get $1 - f64.abs - f64.const 2 - f64.le + (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) + (local $1 i32) + (local $2 f64) + (local $3 f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1065353216 + i32.ge_u if local.get $1 - f64.const 2 - f64.eq + i32.const 1065353216 + i32.eq if local.get $0 - local.get $0 - f64.mul + f32.const 1.5707963705062866 + f32.mul + f32.const 7.52316384526264e-37 + f32.add return end + f32.const 0 + local.get $0 + local.get $0 + f32.sub + f32.div + return + end + local.get $1 + i32.const 1056964608 + i32.lt_u + if 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 + i32.const 964689920 + i32.lt_u local.get $1 - f64.const -1 - f64.eq + i32.const 8388608 + i32.ge_u + i32.and if - f64.const 1 local.get $0 - f64.div return end - local.get $1 - f64.const 1 - f64.eq + local.get $0 + 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.add + return + end + f64.const 1.5707963705062866 + f32.const 0.5 + local.get $0 + f32.abs + f32.const 0.5 + f32.mul + f32.sub + local.tee $3 + f64.promote_f32 + f64.sqrt + local.tee $2 + local.get $2 + local.get $3 + local.get $3 + local.get $3 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $3 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + f64.promote_f32 + f64.mul + f64.add + f64.const 2 + f64.mul + f64.sub + f32.demote_f64 + local.get $0 + f32.copysign + ) + (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + local.get $0 + local.set $1 + local.get $0 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1141899264 + i32.ge_u + if + local.get $0 + local.get $0 + f64.ne if local.get $0 return end + f64.const 1.5707963267948966 local.get $1 - f64.const 0 - f64.eq + f64.copysign + return + end + local.get $2 + i32.const 1071382528 + i32.lt_u + if + local.get $2 + i32.const 1044381696 + i32.lt_u if - f64.const 1 + local.get $0 return end - end - block $~lib/util/math/pow_lut|inlined.0 (result f64) - local.get $1 - i64.reinterpret_f64 - local.tee $11 - i64.const 52 - i64.shr_u - local.set $6 + i32.const -1 + local.set $3 + else local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 52 - i64.shr_u - local.tee $5 - i64.const 1 - i64.sub - i64.const 2046 - i64.ge_u - if (result i32) - i32.const 1 - else - local.get $6 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 128 - i64.ge_u - end - if - local.get $11 - i64.const 1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - i64.const -9007199254740993 - i64.ge_u - if - f64.const 1 - local.get $12 - i64.eqz - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const nan:0x8000000000000 - local.get $2 - i64.const 4607182418800017408 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - local.get $0 - local.get $1 - f64.add - local.get $12 - i64.const -9007199254740992 - i64.gt_u - local.get $2 - i64.const 1 - i64.shl - local.tee $2 - i64.const -9007199254740992 - i64.gt_u - i32.or - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const nan:0x8000000000000 - local.get $2 - i64.const 9214364837600034816 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const 0 - local.get $11 - i64.const 63 - i64.shr_u - i64.eqz - local.get $2 - i64.const 9214364837600034816 - i64.lt_u - i32.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - local.get $1 - local.get $1 - f64.mul - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $2 - i64.const 1 - i64.shl - i64.const 1 - i64.sub - i64.const -9007199254740993 - i64.ge_u - if - f64.const 1 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.neg - local.get $0 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - if (result i32) - block $~lib/util/math/checkint|inlined.0 (result i32) - i32.const 0 - local.get $11 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $2 - i64.const 1023 - i64.lt_u - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 2 - local.get $2 - i64.const 1075 - i64.gt_u - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 0 - local.get $11 - i64.const 1 - i64.const 1075 - local.get $2 - i64.sub - i64.shl - local.tee $2 - 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 $2 - local.get $11 - 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 - else - i32.const 0 - end - select - local.tee $0 - f64.div - local.get $0 - local.get $11 - i64.const 0 - i64.lt_s - select - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $2 - i64.const 0 - i64.lt_s - if - block $~lib/util/math/checkint|inlined.1 (result i32) - i32.const 0 - local.get $11 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $12 - i64.const 1023 - i64.lt_u - br_if $~lib/util/math/checkint|inlined.1 - drop - i32.const 2 - local.get $12 - i64.const 1075 - i64.gt_u - br_if $~lib/util/math/checkint|inlined.1 - drop - i32.const 0 - local.get $11 - i64.const 1 - i64.const 1075 - local.get $12 - i64.sub - i64.shl - local.tee $12 - 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 $11 - local.get $12 - i64.and - i64.const 0 - i64.ne - br_if $~lib/util/math/checkint|inlined.1 - drop - i32.const 2 - end - local.tee $3 - i32.eqz - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - local.get $0 - f64.div - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 2047 - i64.and - local.set $5 - i32.const 262144 - i32.const 0 - local.get $3 - i32.const 1 - i32.eq - select - local.set $4 - local.get $2 - i64.const 9223372036854775807 - i64.and - local.set $2 - end - local.get $6 - i64.const 2047 - i64.and - local.tee $12 - i64.const 958 - i64.sub - i64.const 128 - i64.ge_u - if - f64.const 1 - local.get $2 - i64.const 4607182418800017408 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop + f64.abs + local.set $0 + local.get $2 + i32.const 1072889856 + i32.lt_u + if (result f64) + local.get $2 + i32.const 1072037888 + i32.lt_u + if (result f64) + local.get $0 + local.get $0 + f64.add + f64.const -1 + f64.add + local.get $0 + f64.const 2 + f64.add + f64.div + else + i32.const 1 + local.set $3 + local.get $0 + f64.const -1 + f64.add + local.get $0 f64.const 1 - local.get $12 - i64.const 958 - i64.lt_u - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const inf - f64.const 0 - local.get $6 - i64.const 2048 - i64.lt_u - local.get $2 - i64.const 4607182418800017408 - i64.gt_u - i32.eq - select - br $~lib/util/math/pow_lut|inlined.0 + f64.add + f64.div end - local.get $5 - i64.eqz - if + else + local.get $2 + i32.const 1073971200 + i32.lt_u + if (result f64) + i32.const 2 + local.set $3 local.get $0 - f64.const 4503599627370496 + f64.const -1.5 + f64.add + local.get $0 + f64.const 1.5 f64.mul - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - i64.const 234187180623265792 - i64.sub - local.set $2 + f64.const 1 + f64.add + f64.div + else + i32.const 3 + local.set $3 + f64.const -1 + local.get $0 + f64.div end end - local.get $2 - local.get $2 - i64.const 4604531861337669632 - i64.sub - local.tee $2 - i64.const -4503599627370496 - i64.and - i64.sub - local.tee $5 - i64.const 2147483648 - i64.add - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $7 - local.get $2 - i64.const 45 - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - i32.const 5 - i32.shl - i32.const 10272 - i32.add - local.tee $3 - f64.load - local.tee $8 - f64.mul - f64.const -1 - f64.add - local.set $9 - local.get $2 - i64.const 52 - i64.shr_s - f64.convert_i64_s - local.tee $13 - f64.const 0.6931471805598903 - f64.mul - local.get $3 - f64.load offset=16 - f64.add - local.tee $0 - local.get $9 - local.get $5 - f64.reinterpret_i64 - local.get $7 - f64.sub - local.get $8 - f64.mul - local.tee $7 - f64.add - local.tee $14 - f64.add - local.set $15 - local.get $14 - local.get $14 - f64.const -0.5 - f64.mul - local.tee $8 - f64.mul - local.set $16 - local.get $15 - local.get $9 - local.get $9 - f64.const -0.5 - f64.mul - local.tee $17 - f64.mul - local.tee $9 - f64.add - local.tee $10 - local.get $10 - local.get $13 - f64.const 5.497923018708371e-14 - f64.mul - local.get $3 - f64.load offset=24 - f64.add + local.set $0 + end + local.get $0 + local.get $0 + f64.mul + local.tee $5 + local.get $5 + f64.mul + local.set $4 + local.get $0 + local.get $5 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const 0.016285820115365782 + f64.mul + f64.const 0.049768779946159324 + f64.add + f64.mul + f64.const 0.06661073137387531 + f64.add + f64.mul + f64.const 0.09090887133436507 + f64.add + f64.mul + f64.const 0.14285714272503466 + f64.add + f64.mul + f64.const 0.3333333333333293 + f64.add + f64.mul + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const -0.036531572744216916 + f64.mul + f64.const -0.058335701337905735 + f64.add + f64.mul + f64.const -0.0769187620504483 + f64.add + f64.mul + f64.const -0.11111110405462356 + f64.add + f64.mul + f64.const -0.19999999999876483 + f64.add + f64.mul + f64.add + f64.mul + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if local.get $0 - local.get $15 - f64.sub - local.get $14 - f64.add - f64.add - local.get $7 - local.get $8 - local.get $17 - f64.add - f64.mul - f64.add - local.get $15 - local.get $10 - f64.sub - local.get $9 - f64.add - f64.add - local.get $14 - local.get $16 - f64.mul - local.get $14 - f64.const 0.5000000000000007 - f64.mul - f64.const -0.6666666666666679 - f64.add - local.get $16 - local.get $14 - f64.const -0.6666666663487739 - f64.mul - f64.const 0.7999999995323976 - f64.add - local.get $16 - local.get $14 - 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 $7 + local.get $4 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 $11 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $7 - i64.reinterpret_f64 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.tee $8 - f64.mul - local.tee $9 - i64.reinterpret_f64 - local.tee $2 - i64.const 52 - i64.shr_u - i32.wrap_i64 - i32.const 2047 - i32.and - local.tee $3 - i32.const 969 - i32.sub - local.tee $18 - i32.const 63 - i32.ge_u - if - f64.const -1 - f64.const 1 - local.get $4 - select - local.get $18 - i32.const -2147483648 - i32.ge_u - br_if $~lib/util/math/exp_inline|inlined.0 - drop - f64.const -0 - f64.const 0 - local.get $4 - select - f64.const -inf - f64.const inf + return + end + block $break|0 (result f64) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + block $tablify|0 + local.get $3 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 + end + unreachable + end + f64.const 0.4636476090008061 + local.get $4 + f64.const -2.2698777452961687e-17 + f64.add + local.get $0 + f64.sub + f64.sub + br $break|0 + end + f64.const 0.7853981633974483 local.get $4 - select - local.get $2 - i64.const 0 - i64.lt_s - select - 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 + f64.const -3.061616997868383e-17 + f64.add + local.get $0 + f64.sub + f64.sub + br $break|0 end - local.get $9 - f64.const 184.6649652337873 - f64.mul - f64.const 6755399441055744 - f64.add - local.tee $10 - i64.reinterpret_f64 - local.tee $2 - 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 $18 - i64.load offset=8 - local.get $2 + f64.const 0.982793723247329 local.get $4 - i64.extend_i32_u - i64.add - i64.const 45 - i64.shl - i64.add - local.set $5 - local.get $9 - local.get $10 - f64.const -6755399441055744 - f64.add - local.tee $9 - f64.const -0.005415212348111709 - f64.mul - f64.add - local.get $9 - f64.const -1.2864023111638346e-14 - f64.mul + f64.const -1.3903311031230998e-17 f64.add - local.get $1 local.get $0 f64.sub - local.get $8 - f64.mul - local.get $1 - local.get $7 - local.get $8 f64.sub - global.get $~lib/util/math/log_tail - f64.add - f64.mul - f64.add - f64.add - local.tee $0 - local.get $0 - f64.mul - local.set $1 - local.get $18 - f64.load - local.get $0 - f64.add - local.get $1 - local.get $0 - f64.const 0.16666666666665886 - f64.mul - f64.const 0.49999999999996786 - f64.add - f64.mul - f64.add - local.get $1 - local.get $1 - f64.mul - local.get $0 - 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 $2 - i64.const 2147483648 - i64.and - i64.eqz - if - local.get $5 - i64.const 4544132024016830464 - i64.sub - f64.reinterpret_i64 - local.tee $1 - local.get $1 - local.get $0 - f64.mul - f64.add - f64.const 5486124068793688683255936e279 - f64.mul - br $~lib/util/math/specialcase|inlined.1 - end - local.get $5 - i64.const 4602678819172646912 - i64.add - local.tee $2 - f64.reinterpret_i64 - local.tee $1 - local.get $0 - f64.mul - local.set $0 - local.get $1 - local.get $0 - f64.add - local.tee $7 - f64.abs - f64.const 1 - f64.lt - if (result f64) - f64.const 1 - local.get $7 - f64.copysign - local.tee $8 - local.get $7 - f64.add - local.tee $9 - local.get $8 - local.get $9 - f64.sub - local.get $7 - f64.add - local.get $1 - local.get $7 - f64.sub - local.get $0 - f64.add - f64.add - f64.add - local.get $8 - f64.sub - local.tee $0 - f64.const 0 - f64.eq - if (result f64) - local.get $2 - i64.const -9223372036854775808 - i64.and - f64.reinterpret_i64 - else - local.get $0 - end - else - local.get $7 - end - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp_inline|inlined.0 - end - local.get $5 - f64.reinterpret_i64 - local.tee $1 - local.get $1 - local.get $0 - f64.mul - f64.add - end - end - ) - (func $std/math/test_pow (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.pow - local.get $2 - local.get $3 - call $std/math/check - if (result i32) + br $break|0 + end + f64.const 1.5707963267948966 + local.get $4 + f64.const -6.123233995736766e-17 + f64.add local.get $0 - local.get $1 - call $~lib/bindings/dom/Math.pow - local.get $2 - local.get $3 - call $std/math/check - else - i32.const 0 + f64.sub + f64.sub end - ) - (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) local.get $1 - f32.abs - f32.const 2 - f32.le + f64.copysign + ) + (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 f64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1072693248 + i32.ge_u if + local.get $2 + i32.wrap_i64 local.get $1 - f32.const 2 - f32.eq - if - local.get $0 - local.get $0 - f32.mul - return - end - local.get $1 - f32.const 0.5 - f32.eq + i32.const 1072693248 + i32.sub + i32.or + i32.eqz if local.get $0 - f32.sqrt - f32.abs - f32.const inf - local.get $0 - f32.const -inf - f32.ne - select + f64.const 1.5707963267948966 + f64.mul + f64.const 7.52316384526264e-37 + f64.add return end + f64.const 0 + local.get $0 + local.get $0 + f64.sub + f64.div + return + end + local.get $1 + i32.const 1071644672 + i32.lt_u + if local.get $1 - f32.const -1 - f32.eq - if - f32.const 1 - local.get $0 - f32.div - return - end + i32.const 1045430272 + i32.lt_u local.get $1 - f32.const 1 - f32.eq + i32.const 1048576 + i32.ge_u + i32.and if local.get $0 return end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.mul + 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 end - block $~lib/util/math/powf_lut|inlined.0 (result f32) - local.get $1 - i32.reinterpret_f32 - local.tee $8 - i32.const 1 - i32.shl - local.tee $6 - i32.const 1 - i32.sub - i32.const -16777217 - i32.ge_u - local.tee $7 + f64.const 0.5 + local.get $0 + f64.abs + f64.const 0.5 + f64.mul + f64.sub + local.tee $0 + f64.sqrt + local.set $4 + 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 $5 + local.get $1 + i32.const 1072640819 + i32.ge_u + if (result f64) + f64.const 1.5707963267948966 + local.get $4 + local.get $4 + local.get $5 + f64.mul + f64.add + f64.const 2 + f64.mul + f64.const -6.123233995736766e-17 + f64.add + f64.sub + else + f64.const 0.7853981633974483 + local.get $4 + local.get $4 + f64.add + local.get $5 + f64.mul + f64.const 6.123233995736766e-17 local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 8388608 + local.get $4 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $0 + local.get $0 + f64.mul + f64.sub + local.get $4 + local.get $0 + f64.add + f64.div + f64.const 2 + f64.mul + f64.sub + f64.sub + f64.const 0.7853981633974483 + local.get $0 + local.get $0 + f64.add + f64.sub + f64.sub + f64.sub + end + local.tee $0 + f64.neg + local.get $0 + local.get $3 + i32.const 0 + i32.lt_s + select + ) + (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1072693248 + i32.ge_u + if + local.get $3 + i32.wrap_i64 + local.get $1 + i32.const 1072693248 i32.sub - i32.const 2130706432 - i32.ge_u i32.or + i32.eqz if - local.get $7 - if - f32.const 1 - local.get $6 - i32.eqz - br_if $~lib/util/math/powf_lut|inlined.0 - drop - f32.const nan:0x400000 - local.get $2 - i32.const 1065353216 - i32.eq - br_if $~lib/util/math/powf_lut|inlined.0 - drop - local.get $0 - local.get $1 - f32.add - local.get $6 - i32.const -16777216 - i32.gt_u - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - i32.const -16777216 - i32.gt_u - i32.or - br_if $~lib/util/math/powf_lut|inlined.0 - drop - f32.const nan:0x400000 - local.get $2 - i32.const 2130706432 - i32.eq - br_if $~lib/util/math/powf_lut|inlined.0 - drop - f32.const 0 - local.get $8 - i32.const 31 - i32.shr_u - i32.eqz - local.get $2 - i32.const 2130706432 - i32.lt_u - i32.eq - br_if $~lib/util/math/powf_lut|inlined.0 - drop - local.get $1 - local.get $1 - f32.mul - 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 $0 - local.get $0 - f32.mul - local.tee $0 - f32.neg - local.get $0 - local.get $2 - i32.const 31 - i32.shr_u - if (result i32) - block $~lib/util/math/checkintf|inlined.0 (result i32) - i32.const 0 - local.get $8 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $2 - i32.const 127 - i32.lt_u - br_if $~lib/util/math/checkintf|inlined.0 - drop - i32.const 2 - local.get $2 - i32.const 150 - i32.gt_u - br_if $~lib/util/math/checkintf|inlined.0 - drop - i32.const 0 - local.get $8 - i32.const 1 - i32.const 150 - local.get $2 - i32.sub - i32.shl - local.tee $2 - i32.const 1 - i32.sub - i32.and - br_if $~lib/util/math/checkintf|inlined.0 - drop - i32.const 1 - local.get $2 - local.get $8 - i32.and - br_if $~lib/util/math/checkintf|inlined.0 - drop - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - select - local.tee $0 - f32.div - local.get $0 - local.get $8 - i32.const 0 - i32.lt_s - select - br $~lib/util/math/powf_lut|inlined.0 - end local.get $2 i32.const 0 i32.lt_s if - block $~lib/util/math/checkintf|inlined.1 (result i32) - i32.const 0 - local.get $8 - 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.1 - drop - i32.const 2 - local.get $4 - i32.const 150 - i32.gt_u - br_if $~lib/util/math/checkintf|inlined.1 - drop - i32.const 0 - local.get $8 - 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.1 - drop - i32.const 1 - local.get $4 - local.get $8 - i32.and - br_if $~lib/util/math/checkintf|inlined.1 - drop - i32.const 2 - end - local.tee $4 - i32.eqz - if - local.get $0 - local.get $0 - f32.sub - local.tee $0 - local.get $0 - f32.div - br $~lib/util/math/powf_lut|inlined.0 - end - i32.const 65536 - i32.const 0 - local.get $4 - i32.const 1 - i32.eq - select - local.set $4 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - end - local.get $2 - i32.const 8388608 - i32.lt_u - if - local.get $0 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - i32.const 192937984 - i32.sub - local.set $2 + f64.const 3.141592653589793 + return end + f64.const 0 + return + end + f64.const 0 + local.get $0 + local.get $0 + f64.sub + f64.div + return + end + local.get $1 + i32.const 1071644672 + i32.lt_u + if + local.get $1 + i32.const 1012924416 + i32.le_u + if + f64.const 1.5707963267948966 + return end - local.get $2 - local.get $2 - i32.const 1060306944 - i32.sub - local.tee $2 - i32.const -8388608 - i32.and - local.tee $6 - i32.sub - f32.reinterpret_i32 - f64.promote_f32 - local.get $2 - i32.const 19 - i32.shr_u - i32.const 15 - i32.and - i32.const 4 - i32.shl - i32.const 10016 - i32.add - local.tee $2 - f64.load + f64.const 1.5707963267948966 + local.get $0 + f64.const 6.123233995736766e-17 + local.get $0 + local.get $0 + local.get $0 f64.mul - f64.const -1 + 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 - local.tee $3 - local.get $3 f64.mul - local.set $9 - local.get $1 - f64.promote_f32 - local.get $3 - f64.const 0.288457581109214 + f64.const -0.04005553450067941 + f64.add f64.mul - f64.const -0.36092606229713164 + f64.const 0.20121253213486293 f64.add - local.get $9 - local.get $9 f64.mul + f64.const -0.3255658186224009 + f64.add f64.mul - local.get $3 - f64.const 1.4426950408774342 + f64.const 0.16666666666666666 + f64.add f64.mul - local.get $2 - f64.load offset=8 - local.get $6 - i32.const 23 - i32.shr_s - f64.convert_i32_s + 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 - local.get $3 - f64.const 0.480898481472577 f64.mul - f64.const -0.7213474675006291 + f64.const -2.403394911734414 f64.add - local.get $9 f64.mul + f64.const 1 f64.add + f64.div + f64.mul + f64.sub + f64.sub + f64.sub + return + end + local.get $2 + i32.const 0 + i32.lt_s + 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 $4 + 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.tee $3 - i64.reinterpret_f64 - i64.const 47 - i64.shr_u - i64.const 65535 - i64.and - i64.const 32959 - i64.ge_u - if - f32.const -inf - f32.const inf - local.get $4 - select - local.get $3 - f64.const 127.99999995700433 - f64.gt - br_if $~lib/util/math/powf_lut|inlined.0 - drop - f32.const -0 - f32.const 0 - local.get $4 - select - local.get $3 - f64.const -150 - f64.le - br_if $~lib/util/math/powf_lut|inlined.0 - drop - end - local.get $3 - f64.const 211106232532992 + f64.const 7.915349942898145e-04 f64.add - local.tee $9 - i64.reinterpret_f64 - local.set $5 - local.get $3 - local.get $9 - f64.const -211106232532992 + f64.mul + f64.const -0.04005553450067941 f64.add - f64.sub - local.tee $3 - f64.const 0.6931471806916203 f64.mul - f64.const 1 + f64.const 0.20121253213486293 f64.add - local.get $3 - f64.const 0.05550361559341535 f64.mul - f64.const 0.2402284522445722 + f64.const -0.3255658186224009 f64.add - local.get $3 - local.get $3 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 - local.get $5 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.const 7712 - i32.add - i64.load - local.get $5 + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div local.get $4 - i64.extend_i32_u - i64.add - i64.const 47 - i64.shl - i64.add - f64.reinterpret_i64 f64.mul - f32.demote_f64 + f64.const -6.123233995736766e-17 + f64.add + f64.add + f64.sub + f64.const 2 + f64.mul + return end - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - (local $1 i32) - (local $2 i64) - i64.const -7046029254386353131 - local.get $0 + f64.const 0.5 local.get $0 - i64.eqz - select + f64.const 0.5 + f64.mul + f64.sub + local.tee $4 + f64.sqrt + local.tee $5 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 local.tee $0 - i64.const 33 - i64.shr_u + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + 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 $4 + local.get $4 + local.get $4 + local.get $4 + 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 $5 + f64.mul + local.get $4 local.get $0 - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - global.set $~lib/math/random_state1_64 local.get $0 - i32.wrap_i64 - i32.const 1831565813 - i32.add - local.tee $1 - i32.const 1 - i32.or - local.get $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.mul - local.tee $1 - i32.const 61 - i32.or - local.get $1 - local.get $1 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - local.get $1 - i32.add - local.get $1 - i32.xor - local.tee $1 - i32.const 14 - i32.shr_u - local.get $1 - i32.xor - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - i32.const 1831565813 - i32.add - local.tee $1 - i32.const 1 - i32.or - local.get $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.mul - local.tee $1 - i32.const 61 - i32.or - local.get $1 - local.get $1 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - local.get $1 - i32.add - local.get $1 - i32.xor - local.tee $1 - i32.const 14 - i32.shr_u - local.get $1 - i32.xor - global.set $~lib/math/random_state1_32 - i32.const 1 - global.set $~lib/math/random_seeded - ) - (func $std/math/test_round (param $0 f64) (param $1 f64) (result i32) - (local $2 f64) + f64.mul + f64.sub + local.get $5 local.get $0 - f64.ceil - local.tee $2 - local.get $2 - f64.const -1 f64.add - local.get $2 - f64.const -0.5 + f64.div f64.add - local.get $0 - f64.le - select - local.get $1 - f64.const 0 - call $std/math/check + f64.add + f64.const 2 + f64.mul ) - (func $std/math/test_roundf (param $0 f32) (param $1 f32) (result i32) - (local $2 f32) - local.get $0 - f32.ceil - local.tee $2 - local.get $2 - f32.const -1 - f32.add - local.get $2 - f32.const -0.5 - f32.add - local.get $0 - f32.le - select + (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f64) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + block $__inlined_func$~lib/math/NativeMathf.cbrt$19 (result f32) + local.get $0 + local.get $0 + f32.add + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 2147483647 + i32.and + local.tee $6 + i32.const 2139095040 + i32.ge_u + br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 + drop + local.get $6 + i32.const 8388608 + i32.lt_u + if (result i32) + local.get $0 + local.get $6 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 + drop + local.get $0 + f32.const 16777216 + f32.mul + i32.reinterpret_f32 + local.tee $4 + i32.const 2147483647 + i32.and + i32.const 3 + i32.div_u + i32.const 642849266 + i32.add + else + local.get $6 + i32.const 3 + i32.div_u + i32.const 709958130 + i32.add + end + local.get $4 + 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 $7 + local.get $3 + local.get $0 + f64.promote_f32 + local.tee $5 + local.get $5 + f64.add + local.tee $3 + local.get $7 + f64.add + f64.mul + local.get $5 + local.get $7 + f64.add + local.get $7 + f64.add + f64.div + local.tee $7 + local.get $7 + f64.mul + local.get $7 + f64.mul + local.set $8 + local.get $7 + local.get $3 + local.get $8 + f64.add + f64.mul + local.get $5 + local.get $8 + f64.add + local.get $8 + f64.add + f64.div + f32.demote_f64 + end local.get $1 - f32.const 0 + local.get $2 call $std/math/check ) - (func $std/math/test_sign (param $0 f64) (param $1 f64) (result i32) - f64.const 1 - f64.const -1 - local.get $0 + (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 f64) local.get $0 - f64.const 0 - f64.lt - select local.get $0 - f64.const 0 - f64.gt - select + f64.add + local.set $3 + block $__inlined_func$~lib/math/NativeMath.cbrt$18 + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 2146435072 + i32.ge_u + br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 + local.get $4 + i32.const 1048576 + i32.lt_u + if (result i32) + local.get $0 + local.tee $3 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 + local.get $4 + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add + else + local.get $4 + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add + end + local.set $4 + local.get $5 + i64.const -9223372036854775808 + i64.and + local.get $4 + 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 $6 + local.get $0 + local.get $3 + local.get $6 + local.get $6 + f64.const 1.6214297201053545 + f64.mul + f64.const -1.8849797954337717 + f64.add + f64.mul + f64.const 1.87595182427177 + f64.add + local.get $6 + local.get $6 + f64.mul + local.get $6 + f64.mul + local.get $6 + 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 $6 + local.get $3 + local.get $3 + local.get $6 + local.get $3 + f64.sub + local.get $3 + local.get $3 + f64.add + local.get $6 + f64.add + f64.div + f64.mul + f64.add + local.set $3 + end + local.get $3 local.get $1 - f64.const 0 + local.get $2 call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/dom/Math.sign + call $~lib/bindings/dom/Math.cbrt local.get $1 - f64.const 0 + local.get $2 call $std/math/check else i32.const 0 end ) - (func $std/math/test_signf (param $0 f32) (param $1 f32) (result i32) - f32.const 1 - f32.const -1 - local.get $0 - local.get $0 - f32.const 0 - f32.lt - select + (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) + (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f32) local.get $0 - f32.const 0 - f32.gt - select - local.get $1 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/NativeMath.rem (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 f64) - local.get $1 - i64.reinterpret_f64 - local.tee $7 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $4 - local.get $7 - i64.const 1 - i64.shl - i64.eqz + local.set $1 local.get $0 - i64.reinterpret_f64 - local.tee $6 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $3 - i64.const 2047 - i64.eq - i32.or - local.get $1 - local.get $1 - f64.ne - i32.or + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1283457024 + i32.ge_u if local.get $0 - local.get $1 - f64.mul - local.tee $0 local.get $0 - f64.div + f32.ne + if + local.get $0 + return + end + f32.const 1.570796251296997 + local.get $1 + f32.copysign return end - local.get $6 - i64.const 1 - i64.shl - i64.eqz + local.get $2 + i32.const 1054867456 + i32.lt_u if - local.get $0 - return - end - local.get $3 - i64.eqz - if (result i64) - local.get $6 - i64.const 1 - local.get $3 - local.get $6 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $3 - i64.sub - i64.shl - else - local.get $6 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $2 - local.get $4 - i64.eqz - if (result i64) - local.get $7 - i64.const 1 - local.get $4 - local.get $7 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $4 - i64.sub - i64.shl - else - local.get $7 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $7 - block $do-break|0 - local.get $3 - local.get $4 - i64.lt_s + local.get $2 + i32.const 964689920 + i32.lt_u if - local.get $3 - i64.const 1 - i64.add - local.get $4 - i64.eq - br_if $do-break|0 local.get $0 return end - loop $while-continue|1 - local.get $3 - local.get $4 - i64.gt_s - if - local.get $2 - local.get $7 - i64.ge_u - if (result i64) - local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $2 - local.get $7 - i64.sub - else - local.get $2 - end - i64.const 1 - i64.shl - local.set $2 - local.get $5 + i32.const -1 + local.set $3 + else + local.get $0 + f32.abs + local.set $0 + local.get $2 + i32.const 1066926080 + i32.lt_u + if (result f32) + local.get $2 + i32.const 1060110336 + i32.lt_u + if (result f32) + local.get $0 + local.get $0 + f32.add + f32.const -1 + f32.add + local.get $0 + f32.const 2 + f32.add + f32.div + else i32.const 1 - i32.shl - local.set $5 - local.get $3 - i64.const 1 - i64.sub local.set $3 - br $while-continue|1 + local.get $0 + f32.const -1 + f32.add + local.get $0 + f32.const 1 + f32.add + f32.div end - end - local.get $2 - local.get $7 - i64.ge_u - if - local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $2 - local.get $7 - i64.sub - local.set $2 - end - local.get $2 - i64.eqz - if - i64.const -60 - local.set $3 else - local.get $3 - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.tee $7 - i64.sub - local.set $3 local.get $2 - local.get $7 - i64.shl - local.set $2 + i32.const 1075576832 + i32.lt_u + if (result f32) + i32.const 2 + local.set $3 + local.get $0 + f32.const -1.5 + f32.add + local.get $0 + f32.const 1.5 + f32.mul + f32.const 1 + f32.add + f32.div + else + i32.const 3 + local.set $3 + f32.const -1 + local.get $0 + f32.div + end end + local.set $0 end - local.get $1 - f64.abs - local.set $1 - local.get $3 - i64.const 0 - i64.gt_s - 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.set $8 - local.get $0 - local.get $1 - f64.sub local.get $0 - local.get $3 - local.get $4 - i64.eq - if (result i32) - i32.const 1 - else - local.get $3 - i64.const 1 - i64.add - local.get $4 - i64.eq - if (result i32) - local.get $5 - i32.const 1 - i32.and - local.get $1 - local.get $8 - f64.eq - i32.and - local.get $1 - local.get $8 - f64.lt - i32.or - else - i32.const 0 - end - end - select - local.tee $0 - f64.neg local.get $0 - local.get $6 - i64.const 0 - i64.lt_s - select - ) - (func $~lib/math/NativeMathf.rem (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 f32) - local.get $1 - i32.reinterpret_f32 - local.tee $7 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and + f32.mul + local.tee $5 + local.get $5 + f32.mul local.set $4 - local.get $7 - i32.const 1 - i32.shl - i32.eqz local.get $0 - i32.reinterpret_f32 - local.tee $6 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $3 - i32.const 255 - i32.eq - i32.or - local.get $1 - local.get $1 - f32.ne - i32.or - if - local.get $0 - local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - return - end - local.get $6 - i32.const 1 - i32.shl - i32.eqz + local.get $5 + local.get $4 + local.get $4 + f32.const 0.06168760731816292 + f32.mul + f32.const 0.14253635704517365 + f32.add + f32.mul + f32.const 0.333333283662796 + f32.add + f32.mul + local.get $4 + local.get $4 + f32.const -0.106480173766613 + f32.mul + f32.const -0.19999158382415771 + f32.add + f32.mul + f32.add + f32.mul + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s if local.get $0 + local.get $4 + f32.sub return end - local.get $3 - if (result i32) - local.get $6 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $6 - i32.const 1 - local.get $3 - local.get $6 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $3 - i32.sub - i32.shl - end - local.set $2 - local.get $4 - if (result i32) - local.get $7 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $7 - i32.const 1 + block $break|0 (result f32) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + block $tablify|0 + local.get $3 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 + end + unreachable + end + f32.const 0.46364760398864746 + local.get $4 + f32.const -5.01215824399992e-09 + f32.add + local.get $0 + f32.sub + f32.sub + br $break|0 + end + f32.const 0.7853981256484985 + local.get $4 + f32.const -3.774894707930798e-08 + f32.add + local.get $0 + f32.sub + f32.sub + br $break|0 + end + f32.const 0.9827936887741089 + local.get $4 + f32.const -3.447321716976148e-08 + f32.add + local.get $0 + f32.sub + f32.sub + br $break|0 + end + f32.const 1.570796251296997 local.get $4 - local.get $7 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $4 - i32.sub - i32.shl + f32.const -7.549789415861596e-08 + f32.add + local.get $0 + f32.sub + f32.sub end - local.set $7 - block $do-break|0 - local.get $3 - local.get $4 - i32.lt_s + local.get $1 + f32.copysign + ) + (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) + (local $1 i64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + (local $6 f64) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 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 $3 - i32.const 1 - i32.add - local.get $4 - i32.eq - br_if $do-break|0 local.get $0 - return - end - loop $while-continue|1 - local.get $3 + f64.const -1 + f64.add + local.tee $5 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $6 + f64.const 1.4426950407214463 + f64.mul + local.set $7 + local.get $5 + local.get $5 + f64.mul + local.tee $8 + local.get $8 + f64.mul + local.set $0 + local.get $7 + local.get $8 + local.get $5 + f64.const 0.48089834696298744 + f64.mul + f64.const -0.7213475204444817 + f64.add + f64.mul + local.tee $4 + f64.add + local.tee $9 + local.get $5 + local.get $6 + f64.sub + f64.const 1.4426950407214463 + f64.mul + local.get $5 + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + local.get $7 + local.get $9 + f64.sub local.get $4 - i32.gt_s - if - local.get $2 - local.get $7 - i32.ge_u - if (result i32) - local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $2 - local.get $7 - i32.sub - else - local.get $2 - end - i32.const 1 - i32.shl - local.set $2 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end + f64.add + f64.add + local.get $0 + local.get $5 + f64.const 0.2885390081805197 + f64.mul + f64.const -0.360673760222145 + f64.add + local.get $8 + local.get $5 + f64.const 0.2060992861022954 + f64.mul + f64.const -0.24044917405728863 + f64.add + f64.mul + f64.add + local.get $0 + local.get $5 + f64.const 0.1603032746063156 + f64.mul + f64.const -0.18033596705327856 + f64.add + local.get $8 + local.get $5 + 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 - local.get $2 - local.get $7 + local.get $1 + i64.const 48 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 16 + i32.sub + i32.const 32736 i32.ge_u if - local.get $5 + f64.const -1 + local.get $0 + local.get $0 + f64.mul + f64.div + local.get $1 + 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 i32.const 1 - i32.add - local.set $5 local.get $2 - local.get $7 - i32.sub - local.set $2 - end - local.get $2 - if - local.get $3 - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $7 - i32.sub - local.set $3 + i32.const 32752 + i32.and + i32.const 32752 + i32.eq local.get $2 - local.get $7 - i32.shl - local.set $2 - else - i32.const -30 - local.set $3 + i32.const 32768 + i32.and + select + if + local.get $0 + local.get $0 + f64.sub + local.tee $0 + local.get $0 + f64.div + br $~lib/util/math/log2_lut|inlined.0 + end + local.get $0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 234187180623265792 + i64.sub + local.set $1 end - end - local.get $1 - f32.abs - local.set $1 - local.get $3 - i32.const 0 - i32.gt_s - if (result i32) - local.get $2 - i32.const 8388608 - i32.sub - local.get $3 - i32.const 23 + local.get $1 + i64.const 4604367669032910848 + i64.sub + local.tee $3 + i64.const 46 + i64.shr_u + i64.const 63 + i64.and + i32.wrap_i64 + i32.const 4 i32.shl - i32.or - else - local.get $2 - i32.const 1 + local.tee $2 + i32.const 7968 + i32.add + local.set $10 local.get $3 - i32.sub - i32.shr_u - end - f32.reinterpret_i32 - local.tee $0 - local.get $0 - f32.add - local.set $8 - local.get $0 - local.get $1 - f32.sub - local.get $0 - local.get $3 - local.get $4 - i32.eq - if (result i32) - i32.const 1 - else + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.get $10 + f64.load offset=8 + f64.add + local.tee $0 + local.get $1 local.get $3 - i32.const 1 + i64.const -4503599627370496 + i64.and + i64.sub + f64.reinterpret_i64 + local.get $2 + i32.const 8992 i32.add + local.tee $2 + f64.load + f64.sub + local.get $2 + f64.load offset=8 + f64.sub + local.get $10 + f64.load + f64.mul + local.tee $4 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $5 + f64.const 1.4426950407214463 + f64.mul + local.tee $6 + f64.add + local.set $7 + local.get $0 + local.get $7 + f64.sub + local.get $6 + f64.add local.get $4 - i32.eq - if (result i32) - local.get $5 - i32.const 1 - i32.and - local.get $1 - local.get $8 - f32.eq - i32.and - local.get $1 - local.get $8 - f32.lt - i32.or - else - i32.const 0 - end + local.get $5 + f64.sub + f64.const 1.4426950407214463 + f64.mul + local.get $4 + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + f64.add + local.get $4 + local.get $4 + f64.mul + local.tee $0 + local.get $4 + f64.const 0.4808983469629985 + f64.mul + f64.const -0.7213475204444882 + f64.add + local.get $0 + local.get $4 + f64.const 0.2885390073180969 + f64.mul + f64.const -0.36067375954075914 + f64.add + f64.mul + f64.add + local.get $0 + local.get $0 + f64.mul + local.get $4 + f64.const 0.2061202382173603 + f64.mul + f64.const -0.2404693555628422 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.get $7 + f64.add end - select - local.tee $0 - f32.neg - local.get $0 - local.get $6 - i32.const 0 - i32.lt_s - select ) - (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) + (func $std/math/test_log2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i64) + (local $4 f64) + (local $5 f64) (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 31 - i32.shr_u - local.set $6 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1072243195 - i32.le_u - if - local.get $3 - i32.const 1045430272 - i32.lt_u + (local $7 i32) + 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 + local.tee $6 + i32.eqz + br_if $~lib/util/math/log2f_lut|inlined.0 + drop local.get $0 - return + local.get $3 + i32.const 2139095040 + i32.eq + br_if $~lib/util/math/log2f_lut|inlined.0 + drop + local.get $3 + i32.const 31 + i32.shr_u + local.get $6 + i32.const -16777216 + i32.ge_u + i32.or + if + local.get $0 + local.get $0 + f32.sub + local.tee $0 + local.get $0 + f32.div + br $~lib/util/math/log2f_lut|inlined.0 + end + local.get $0 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 192937984 + i32.sub + local.set $3 end - local.get $0 - local.get $0 - local.get $0 + local.get $3 + i32.const 1060306944 + i32.sub + local.tee $6 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 10016 + i32.add + local.set $7 + local.get $3 + local.get $6 + i32.const -8388608 + i32.and + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $7 + f64.load f64.mul - local.tee $1 - local.get $0 + f64.const -1 + f64.add + local.tee $4 + local.get $4 f64.mul - local.get $1 - local.get $1 - local.get $1 - f64.const 2.7557313707070068e-06 + local.set $5 + local.get $4 + f64.const 0.4811247078767291 f64.mul - f64.const -1.984126982985795e-04 + f64.const -0.7213476299867769 f64.add + local.get $5 + f64.const -0.36051725506874704 f64.mul - f64.const 0.00833333333332249 f64.add - local.get $1 - local.get $1 - local.get $1 - f64.mul - f64.mul - local.get $1 - f64.const 1.58969099521155e-10 + local.get $5 f64.mul - f64.const -2.5050760253406863e-08 - f64.add + local.get $4 + f64.const 1.4426950186867042 f64.mul + local.get $7 + f64.load offset=8 + local.get $6 + i32.const 23 + i32.shr_s + f64.convert_i32_s f64.add - f64.mul - f64.const -0.16666666666666632 f64.add - f64.mul f64.add - return + f32.demote_f64 end - local.get $3 - i32.const 2146435072 - i32.ge_u - if - local.get $0 + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 f32) + (local $10 f32) + block $__inlined_func$~lib/math/NativeMathf.log10$25 (result f32) local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.1 (result i32) - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u local.tee $4 - i32.const 1073928572 + local.get $3 + i32.const 8388608 i32.lt_u + i32.or if + f32.const -1 + local.get $0 + local.get $0 + f32.mul + f32.div + local.get $3 i32.const 1 + i32.shl + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + drop + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.div + local.get $4 + br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + drop + i32.const -25 + local.set $6 + local.get $0 + f32.const 33554432 + f32.mul + i32.reinterpret_f32 local.set $3 - local.get $6 - if (result f64) + else + local.get $3 + i32.const 2139095040 + i32.ge_u + if local.get $0 - f64.const 1.5707963267341256 - f64.add - local.set $0 - i32.const -1 - local.set $3 - local.get $4 - 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 $1 - f64.const 2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - end + br $__inlined_func$~lib/math/NativeMathf.log10$25 else - local.get $0 - f64.const -1.5707963267341256 - f64.add - local.set $0 - local.get $4 - 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 $1 - f64.const -2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const -2.0222662487959506e-21 - f64.add - end + f32.const 0 + local.get $3 + i32.const 1065353216 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + drop end - local.get $0 - global.set $~lib/math/rempio2_y0 - global.set $~lib/math/rempio2_y1 - local.get $3 - br $~lib/math/rempio2|inlined.1 end - local.get $4 - i32.const 1094263291 + 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.add + local.tee $8 + local.get $8 + f32.const 2 + f32.add + f32.div + local.tee $0 + local.get $0 + f32.mul + local.tee $5 + local.get $5 + f32.mul + local.set $9 + local.get $6 + local.get $3 + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + i32.add + f32.convert_i32_s + local.tee $7 + f32.const 7.903415166765626e-07 + f32.mul + local.get $8 + local.get $8 + local.get $8 + f32.const 0.5 + f32.mul + local.get $8 + f32.mul + local.tee $8 + f32.sub + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $10 + f32.sub + local.get $8 + f32.sub + local.get $0 + local.get $8 + local.get $5 + local.get $9 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $9 + local.get $9 + 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 $10 + f32.add + f32.const -3.168997136526741e-05 + f32.mul + f32.add + local.get $0 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $10 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $7 + f32.const 0.3010292053222656 + f32.mul + f32.add + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 f64) + block $__inlined_func$~lib/math/NativeMath.log10$1 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.tee $6 + local.get $3 + i32.const 1048576 i32.lt_u + i32.or if - local.get $4 - i32.const 20 - i32.shr_u - local.tee $3 + f64.const -1 local.get $0 local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $7 - f64.const 1.5707963267341256 f64.mul + f64.div + local.get $4 + i64.const 1 + i64.shl + i64.eqz + br_if $__inlined_func$~lib/math/NativeMath.log10$1 + drop + local.get $0 + local.get $0 f64.sub - local.tee $0 - local.get $7 - f64.const 6.077100506506192e-11 + f64.const 0 + f64.div + local.get $6 + br_if $__inlined_func$~lib/math/NativeMath.log10$1 + drop + i32.const -54 + local.set $5 + local.get $0 + f64.const 18014398509481984 f64.mul - local.tee $2 - f64.sub - local.tee $1 i64.reinterpret_f64 + local.tee $4 i64.const 32 i64.shr_u i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u + local.set $3 + else + local.get $3 + i32.const 2146435072 + i32.ge_u if - local.get $7 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $7 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $2 - local.get $3 local.get $0 - local.get $2 - f64.sub - local.tee $1 - i64.reinterpret_f64 + br $__inlined_func$~lib/math/NativeMath.log10$1 + else + f64.const 0 + local.get $4 i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 + i64.shl + i64.eqz + local.get $3 + i32.const 1072693248 + i32.eq i32.and - i32.sub - i32.const 49 - i32.gt_u - if - local.get $7 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $7 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $2 - local.get $0 - local.get $2 - f64.sub - local.set $1 - end + br_if $__inlined_func$~lib/math/NativeMath.log10$1 + drop end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $2 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $7 - i32.trunc_sat_f64_s - br $~lib/math/rempio2|inlined.1 end - i32.const 0 - local.get $5 - call $~lib/math/pio2_large_quot - local.tee $3 - i32.sub + local.get $4 + i64.const 4294967295 + i64.and local.get $3 - local.get $6 - select - end - local.set $3 - global.get $~lib/math/rempio2_y0 - local.set $2 - global.get $~lib/math/rempio2_y1 - local.set $7 - local.get $3 - i32.const 1 - i32.and - if (result f64) - local.get $2 - local.get $2 - f64.mul - local.tee $0 - local.get $0 - f64.mul - local.set $1 - f64.const 1 - local.get $0 + i32.const 614242 + i32.add + local.tee $3 + 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.add + local.tee $7 f64.const 0.5 f64.mul - local.tee $8 - f64.sub + local.get $7 + f64.mul + local.set $8 + local.get $7 + local.get $7 + f64.const 2 + f64.add + f64.div local.tee $9 - f64.const 1 local.get $9 + f64.mul + local.tee $10 + local.get $10 + f64.mul + local.set $11 + local.get $7 + local.get $7 + local.get $8 + f64.sub + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $12 f64.sub local.get $8 f64.sub - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 2.480158728947673e-05 + local.get $9 + local.get $8 + local.get $10 + local.get $11 + local.get $11 + local.get $11 + f64.const 0.14798198605116586 f64.mul - f64.const -0.001388888888887411 + f64.const 0.1818357216161805 f64.add f64.mul - f64.const 0.0416666666666666 + f64.const 0.2857142874366239 f64.add f64.mul - local.get $1 - local.get $1 - f64.mul - local.get $0 - local.get $0 - f64.const -1.1359647557788195e-11 - f64.mul - f64.const 2.087572321298175e-09 + f64.const 0.6666666666666735 f64.add f64.mul - f64.const -2.7557314351390663e-07 - f64.add + local.get $11 + local.get $11 + local.get $11 + f64.const 0.15313837699209373 f64.mul + f64.const 0.22222198432149784 f64.add f64.mul - local.get $2 - local.get $7 + f64.const 0.3999999999940942 + f64.add f64.mul - f64.sub f64.add f64.add - else - local.get $2 - local.get $2 - f64.mul - local.tee $0 - local.get $2 f64.mul - local.set $1 - local.get $2 - local.get $0 - local.get $7 - f64.const 0.5 + f64.add + local.set $8 + local.get $5 + local.get $3 + 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.get $1 - local.get $0 - local.get $0 - f64.const 2.7557313707070068e-06 + local.tee $10 + local.get $12 + f64.const 0.4342944818781689 f64.mul - f64.const -1.984126982985795e-04 + local.tee $11 f64.add + local.set $7 + local.get $9 + f64.const 3.694239077158931e-13 f64.mul - f64.const 0.00833333333332249 + local.get $8 + local.get $12 f64.add - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.mul - local.get $0 - f64.const 1.58969099521155e-10 + f64.const 2.5082946711645275e-11 f64.mul - f64.const -2.5050760253406863e-08 f64.add + local.get $8 + f64.const 0.4342944818781689 f64.mul f64.add - f64.mul - f64.sub - f64.mul + local.get $10 local.get $7 f64.sub + local.get $11 + f64.add + f64.add + local.get $7 + f64.add + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.log10 local.get $1 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub + local.get $2 + call $std/math/check + else + i32.const 0 end - local.tee $0 - f64.neg - local.get $0 - local.get $3 - i32.const 2 - i32.and - select ) - (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) + (func $std/math/test_acoshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) - (local $4 f64) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_u - local.set $6 - block $folding-inner0 - local.get $3 + block $__inlined_func$~lib/math/NativeMathf.acosh$9 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 i32.const 2147483647 i32.and - local.tee $3 - i32.const 1061752794 - i32.le_u + i32.const 1073741824 + i32.lt_u if - local.get $3 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end local.get $0 - f64.promote_f32 - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $4 - br $folding-inner0 - end - local.get $3 - i32.const 1081824209 - i32.le_u - if - local.get $3 - i32.const 1075235811 - i32.le_u - if - local.get $6 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - 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.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - end - return - end + f32.const -1 + f32.add + local.tee $0 local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 3.141592653589793 - f64.add - local.get $1 - f64.const -3.141592653589793 - f64.add - local.get $6 - select - f64.neg - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $4 - br $folding-inner0 - end - local.get $3 - i32.const 1088565717 - i32.le_u - if - local.get $3 - i32.const 1085271519 - i32.le_u - if - local.get $6 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - 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.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - 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 $1 - f64.const 6.283185307179586 - f64.add - local.get $1 - f64.const -6.283185307179586 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $4 - br $folding-inner0 + f32.const 2 + f32.add + f32.mul + f32.sqrt + f32.add + call $~lib/math/NativeMathf.log1p + br $__inlined_func$~lib/math/NativeMathf.acosh$9 end local.get $3 - i32.const 2139095040 - i32.ge_u + i32.const 1166016512 + i32.lt_u if local.get $0 local.get $0 + f32.add + f32.const 1 + local.get $0 + local.get $0 + local.get $0 + f32.mul + f32.const -1 + f32.add + f32.sqrt + f32.add + f32.div f32.sub - return + call $~lib/math/NativeMathf.log + br $__inlined_func$~lib/math/NativeMathf.acosh$9 end - block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $3 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $2 - local.get $1 - local.get $2 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $2 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $2 - i32.trunc_sat_f64_s - br $~lib/math/rempio2f|inlined.1 - end - local.get $3 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $7 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $8 - local.get $7 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $7 - i64.load offset=8 - local.set $5 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign + local.get $0 + call $~lib/math/NativeMathf.log + f32.const 0.6931471824645996 + f32.add + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_tanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $3 + f32.reinterpret_i32 + local.set $4 + local.get $3 + i32.const 1057791828 + i32.gt_u + if (result f32) + local.get $3 + i32.const 1092616192 + i32.gt_u + if (result f32) + f32.const 0 + local.get $4 + f32.div + f32.const 1 + f32.add + else + f32.const 1 + f32.const 2 + local.get $4 + local.get $4 + f32.add + call $~lib/math/NativeMathf.expm1 + f32.const 2 + f32.add + f32.div + f32.sub + end + else + local.get $3 + i32.const 1048757624 + i32.gt_u + if (result f32) + local.get $4 + local.get $4 + f32.add + call $~lib/math/NativeMathf.expm1 + local.tee $4 + local.get $4 + f32.const 2 + f32.add + f32.div + else local.get $3 - i32.const 8388607 - i32.and i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - i64.load - local.get $8 - i64.shl - local.get $5 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $8 - i64.const 32 - i64.gt_u - if (result i64) - local.get $5 - local.get $8 - i64.const 32 - i64.sub - i64.shl - local.get $7 - i64.load offset=16 - i64.const 96 - local.get $8 - i64.sub - i64.shr_u - i64.or + i32.ge_u + if (result f32) + local.get $4 + f32.const -2 + f32.mul + call $~lib/math/NativeMathf.expm1 + local.tee $4 + f32.neg + local.get $4 + f32.const 2 + f32.add + f32.div else - local.get $5 - i64.const 32 - local.get $8 - i64.sub - i64.shr_u + local.get $4 end - local.get $9 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - 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 $5 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $3 - i32.sub - local.get $3 - local.get $6 - select end - local.set $3 - global.get $~lib/math/rempio2f_y - local.set $1 + end + local.get $0 + f32.copysign + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + f64.reinterpret_i64 + local.set $5 + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 1071748074 + i32.gt_u + if (result f64) local.get $3 - i32.const 1 - i32.and - if (result f32) - local.get $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul + i32.const 1077149696 + i32.gt_u + if (result f64) f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 + f64.const 0 + local.get $5 + f64.div + f64.sub else - local.get $1 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.tee $1 - local.get $2 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 + f64.const 1 + f64.const 2 + local.get $5 + local.get $5 f64.add - f64.mul + call $~lib/math/NativeMath.expm1 + f64.const 2 f64.add - local.get $1 - local.get $2 - local.get $2 - f64.mul - f64.mul - local.get $2 - f64.const 2.718311493989822e-06 - f64.mul - f64.const -1.9839334836096632e-04 + f64.div + f64.sub + end + else + local.get $3 + i32.const 1070618798 + i32.gt_u + if (result f64) + local.get $5 + local.get $5 f64.add - f64.mul + call $~lib/math/NativeMath.expm1 + local.tee $5 + local.get $5 + f64.const 2 f64.add - f32.demote_f64 + f64.div + else + local.get $3 + i32.const 1048576 + i32.ge_u + if (result f64) + local.get $5 + f64.const -2 + f64.mul + call $~lib/math/NativeMath.expm1 + local.tee $5 + f64.neg + local.get $5 + f64.const 2 + f64.add + f64.div + else + local.get $5 + end end - local.tee $0 - f32.neg + end + local.get $0 + f64.copysign + local.get $1 + local.get $2 + call $std/math/check + if (result i32) local.get $0 + call $~lib/bindings/dom/Math.tanh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_sinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f32) + (local $4 i32) + (local $5 f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $4 + f32.reinterpret_i32 + local.set $5 + f32.const 0.5 + local.get $0 + f32.copysign + local.set $3 + block $__inlined_func$~lib/math/NativeMathf.sinh$36 + local.get $4 + i32.const 1118925335 + i32.lt_u + if + local.get $5 + call $~lib/math/NativeMathf.expm1 + local.set $5 + local.get $4 + i32.const 1065353216 + i32.lt_u + if + local.get $4 + i32.const 964689920 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMathf.sinh$36 + local.get $3 + local.get $5 + local.get $5 + f32.add + local.get $5 + local.get $5 + f32.mul + local.get $5 + f32.const 1 + f32.add + f32.div + f32.sub + f32.mul + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.sinh$36 + end + local.get $3 + local.get $5 + local.get $5 + local.get $5 + f32.const 1 + f32.add + f32.div + f32.add + f32.mul + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.sinh$36 + end + local.get $5 + f32.const -162.88958740234375 + f32.add + call $~lib/math/NativeMathf.exp local.get $3 - i32.const 2 - i32.and - select - return + local.get $3 + f32.add + f32.const 1661534994731144841129758e11 + f32.mul + f32.mul + f32.const 1661534994731144841129758e11 + f32.mul + local.set $0 end - local.get $2 - local.get $4 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $4 - local.get $1 - local.get $1 - f64.mul - f64.mul + local.get $0 local.get $1 - f64.const 2.718311493989822e-06 - f64.mul - f64.const -1.9839334836096632e-04 - f64.add - f64.mul - f64.add - f32.demote_f64 + local.get $2 + call $std/math/check ) (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) (local $4 i32) (local $5 i64) (local $6 f64) + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $5 + f64.reinterpret_i64 + local.set $6 + f64.const 0.5 + local.get $0 + f64.copysign + local.set $3 block $__inlined_func$~lib/math/NativeMath.sinh$35 (result f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $5 - f64.reinterpret_i64 - local.set $6 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $3 local.get $5 i64.const 32 i64.shr_u @@ -10003,55 +10270,196 @@ i32.const 1082535490 i32.lt_u if - local.get $6 - call $~lib/math/NativeMath.expm1 - local.set $6 - local.get $4 - i32.const 1072693248 - i32.lt_u - if - local.get $0 - local.get $4 - i32.const 1045430272 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMath.sinh$35 - drop - local.get $3 - local.get $6 - local.get $6 - f64.add - local.get $6 - local.get $6 - f64.mul - local.get $6 - f64.const 1 - f64.add - f64.div - f64.sub - f64.mul - br $__inlined_func$~lib/math/NativeMath.sinh$35 - end - local.get $3 - local.get $6 - local.get $6 - local.get $6 + local.get $6 + call $~lib/math/NativeMath.expm1 + local.set $6 + local.get $4 + i32.const 1072693248 + i32.lt_u + if + local.get $0 + local.get $4 + i32.const 1045430272 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMath.sinh$35 + drop + local.get $3 + local.get $6 + local.get $6 + f64.add + local.get $6 + local.get $6 + f64.mul + local.get $6 + f64.const 1 + f64.add + f64.div + f64.sub + f64.mul + br $__inlined_func$~lib/math/NativeMath.sinh$35 + end + local.get $3 + local.get $6 + local.get $6 + local.get $6 + f64.const 1 + f64.add + f64.div + f64.add + f64.mul + br $__inlined_func$~lib/math/NativeMath.sinh$35 + end + local.get $6 + f64.const -1416.0996898839683 + f64.add + call $~lib/math/NativeMath.exp + local.get $3 + local.get $3 + f64.add + f64.const 2247116418577894884661631e283 + f64.mul + f64.mul + f64.const 2247116418577894884661631e283 + f64.mul + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.sinh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $3 + f32.reinterpret_i32 + local.set $0 + block $__inlined_func$~lib/math/NativeMathf.cosh$21 (result f32) + local.get $3 + i32.const 1060205079 + i32.lt_u + if + f32.const 1 + local.get $3 + i32.const 964689920 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMathf.cosh$21 + drop + local.get $0 + call $~lib/math/NativeMathf.expm1 + local.tee $0 + local.get $0 + f32.mul + local.get $0 + local.get $0 + f32.add + f32.const 2 + f32.add + f32.div + f32.const 1 + f32.add + br $__inlined_func$~lib/math/NativeMathf.cosh$21 + end + local.get $3 + i32.const 1118925335 + i32.lt_u + if + local.get $0 + call $~lib/math/NativeMathf.exp + local.tee $0 + f32.const 0.5 + f32.mul + f32.const 0.5 + local.get $0 + f32.div + f32.add + br $__inlined_func$~lib/math/NativeMathf.cosh$21 + end + local.get $0 + f32.const -162.88958740234375 + f32.add + call $~lib/math/NativeMathf.exp + f32.const 1661534994731144841129758e11 + f32.mul + f32.const 1661534994731144841129758e11 + f32.mul + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + f64.reinterpret_i64 + local.set $5 + block $__inlined_func$~lib/math/NativeMath.cosh$20 (result f64) + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 1072049730 + i32.lt_u + if + f64.const 1 + local.get $3 + i32.const 1045430272 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMath.cosh$20 + drop + local.get $5 + call $~lib/math/NativeMath.expm1 + local.tee $5 + local.get $5 + f64.mul + local.get $5 + local.get $5 + f64.add + f64.const 2 + f64.add + f64.div + f64.const 1 + f64.add + br $__inlined_func$~lib/math/NativeMath.cosh$20 + end + local.get $3 + i32.const 1082535490 + i32.lt_u + if + local.get $5 + call $~lib/math/NativeMath.exp + local.tee $5 f64.const 1 - f64.add + local.get $5 f64.div f64.add + f64.const 0.5 f64.mul - br $__inlined_func$~lib/math/NativeMath.sinh$35 + br $__inlined_func$~lib/math/NativeMath.cosh$20 end - local.get $6 + local.get $5 f64.const -1416.0996898839683 f64.add call $~lib/math/NativeMath.exp - local.get $3 - local.get $3 - f64.add f64.const 2247116418577894884661631e283 f64.mul - f64.mul f64.const 2247116418577894884661631e283 f64.mul end @@ -10060,7 +10468,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/dom/Math.sinh + call $~lib/bindings/dom/Math.cosh local.get $1 local.get $2 call $std/math/check @@ -10068,281 +10476,282 @@ i32.const 0 end ) - (func $std/math/test_sinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) - (local $5 f32) + (func $std/math/test_asinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 f32) local.get $0 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $4 + local.tee $3 f32.reinterpret_i32 - local.set $5 - f32.const 0.5 - local.get $0 - f32.copysign - local.set $3 - block $__inlined_func$~lib/math/NativeMathf.sinh$36 + local.set $4 + local.get $3 + i32.const 1166016512 + i32.ge_u + if (result f32) local.get $4 - i32.const 1118925335 - i32.lt_u - if - local.get $5 - call $~lib/math/NativeMathf.expm1 - local.set $5 + call $~lib/math/NativeMathf.log + f32.const 0.6931471824645996 + f32.add + else + local.get $3 + i32.const 1073741824 + i32.ge_u + if (result f32) local.get $4 - i32.const 1065353216 - i32.lt_u - if + local.get $4 + f32.add + f32.const 1 + local.get $4 + local.get $4 + f32.mul + f32.const 1 + f32.add + f32.sqrt + local.get $4 + f32.add + f32.div + f32.add + call $~lib/math/NativeMathf.log + else + local.get $3 + i32.const 964689920 + i32.ge_u + if (result f32) + local.get $4 + local.get $4 local.get $4 - i32.const 964689920 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMathf.sinh$36 - local.get $3 - local.get $5 - local.get $5 - f32.add - local.get $5 - local.get $5 f32.mul - local.get $5 + local.tee $4 + local.get $4 + f32.const 1 + f32.add + f32.sqrt f32.const 1 f32.add f32.div - f32.sub - f32.mul - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.sinh$36 + f32.add + call $~lib/math/NativeMathf.log1p + else + local.get $4 end - local.get $3 - local.get $5 - local.get $5 - local.get $5 - f32.const 1 - f32.add - f32.div - f32.add - f32.mul - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.sinh$36 end - local.get $5 - f32.const -162.88958740234375 - f32.add - call $~lib/math/NativeMathf.exp - local.get $3 - local.get $3 - f32.add - f32.const 1661534994731144841129758e11 - f32.mul - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul - local.set $0 end local.get $0 + f32.copysign local.get $1 local.get $2 call $std/math/check ) - (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) - (local $3 i32) - (local $4 i32) + (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i64) + (local $4 i64) (local $5 f64) - (local $6 f64) - (local $7 f64) local.get $0 i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 2147483647 - i32.and - i32.const 1072010280 - i32.ge_u local.tee $4 - if - f64.const 0.7853981633974483 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $3 + local.get $4 + i64.const 9223372036854775807 + i64.and + f64.reinterpret_i64 + local.set $5 + local.get $3 + i64.const 1049 + i64.ge_u + if (result f64) + local.get $5 + call $~lib/math/NativeMath.log + f64.const 0.6931471805599453 + f64.add + else local.get $3 - i32.const 0 - i32.lt_s + i64.const 1024 + i64.ge_u if (result f64) - local.get $1 - f64.neg - local.set $1 - local.get $0 - f64.neg + local.get $5 + local.get $5 + f64.add + f64.const 1 + local.get $5 + local.get $5 + f64.mul + f64.const 1 + f64.add + f64.sqrt + local.get $5 + f64.add + f64.div + f64.add + call $~lib/math/NativeMath.log else - local.get $0 + local.get $3 + i64.const 997 + i64.ge_u + if (result f64) + local.get $5 + local.get $5 + local.get $5 + f64.mul + local.tee $5 + local.get $5 + f64.const 1 + f64.add + f64.sqrt + f64.const 1 + f64.add + f64.div + f64.add + call $~lib/math/NativeMath.log1p + else + local.get $5 + end end - f64.sub - f64.const 3.061616997868383e-17 - local.get $1 - f64.sub - f64.add - local.set $0 - f64.const 0 - local.set $1 end local.get $0 - local.get $0 - f64.mul - local.tee $5 - local.get $5 - f64.mul - local.set $6 - local.get $0 + f64.copysign local.get $1 - local.get $5 - local.get $5 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.asinh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 i64) local.get $0 - f64.mul - local.tee $7 - local.get $6 - local.get $6 - local.get $6 - local.get $6 - local.get $6 - f64.const -1.8558637485527546e-05 - f64.mul - f64.const 7.817944429395571e-05 - f64.add - f64.mul - f64.const 5.880412408202641e-04 - f64.add - f64.mul - f64.const 3.5920791075913124e-03 - f64.add - f64.mul - f64.const 0.021869488294859542 - f64.add - f64.mul - f64.const 0.13333333333320124 - f64.add - local.get $5 - local.get $6 - local.get $6 - local.get $6 - local.get $6 - local.get $6 - f64.const 2.590730518636337e-05 - f64.mul - f64.const 7.140724913826082e-05 - f64.add - f64.mul - f64.const 2.464631348184699e-04 - f64.add - f64.mul - f64.const 1.4562094543252903e-03 - f64.add - f64.mul - f64.const 0.0088632398235993 - f64.add - f64.mul - f64.const 0.05396825397622605 - f64.add - f64.mul - f64.add - f64.mul local.get $1 f64.add - f64.mul - f64.add - local.get $7 - f64.const 0.3333333333333341 - f64.mul - f64.add - local.tee $1 - f64.add - local.set $5 + local.tee $4 local.get $4 + f64.sub + f64.const 0 + f64.ne if - f64.const 1 - local.get $3 - i32.const 30 - i32.shr_s - i32.const 2 - i32.and - f64.convert_i32_s - f64.sub - local.get $2 - f64.convert_i32_s - local.tee $6 - local.get $0 - local.get $5 - local.get $5 - f64.mul - local.get $5 - local.get $6 - f64.add - f64.div - local.get $1 - f64.sub - f64.sub - f64.const 2 - f64.mul - f64.sub - f64.mul - return - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $5 + f64.const 0 return end - f64.const -1 - local.get $5 - f64.div - local.tee $6 + local.get $0 i64.reinterpret_f64 - i64.const -4294967296 + local.tee $3 + i64.const 52 + i64.shr_u + i64.const 2047 i64.and - f64.reinterpret_i64 - local.tee $7 - local.get $6 - local.get $7 - local.get $5 + local.tee $5 + i64.const 1053 + i64.le_u + if (result i32) + local.get $0 + i32.trunc_sat_f64_s + else + local.get $5 + i64.const 1106 + i64.le_u + if (result i32) + i32.const 0 + local.get $3 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.get $5 + i64.const 1043 + i64.sub + i64.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.sub + local.get $2 + local.get $3 + i64.const 0 + i64.lt_s + select + else + i32.const 0 + end + end + local.get $1 i64.reinterpret_f64 - i64.const -4294967296 + local.tee $3 + i64.const 52 + i64.shr_u + i64.const 2047 i64.and - f64.reinterpret_i64 local.tee $5 - f64.mul - f64.const 1 - f64.add - local.get $7 - local.get $1 - local.get $5 - local.get $0 - f64.sub - f64.sub - f64.mul - f64.add - f64.mul - f64.add + i64.const 1053 + i64.le_u + if (result i32) + local.get $1 + i32.trunc_sat_f64_s + else + local.get $5 + i64.const 1106 + i64.le_u + if (result i32) + i32.const 0 + local.get $3 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.get $5 + i64.const 1043 + i64.sub + i64.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.sub + local.get $2 + local.get $3 + i64.const 0 + i64.lt_s + select + else + i32.const 0 + end + end + i32.mul + f64.convert_i32_s ) - (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) + (func $~lib/math/NativeMath.sincos (param $0 f64) (local $1 f64) (local $2 i32) - (local $3 i64) + (local $3 f64) (local $4 f64) - (local $5 f64) - (local $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) + (local $8 f64) + (local $9 f64) local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $6 i64.const 32 i64.shr_u i32.wrap_i64 local.tee $2 i32.const 31 i32.shr_u - local.set $6 + local.set $7 local.get $2 i32.const 2147483647 i32.and @@ -10351,41 +10760,33 @@ i32.le_u if local.get $2 - i32.const 1044381696 + i32.const 1044816030 i32.lt_u if - local.get $0 - return - end - local.get $0 - f64.const 0 - i32.const 1 - call $~lib/math/tan_kern + return + end return end local.get $2 - i32.const 2146435072 + i32.const 2139095040 i32.ge_u if - local.get $0 - local.get $0 - f64.sub return end - block $~lib/math/rempio2|inlined.2 - local.get $3 + block $~lib/math/rempio2|inlined.3 (result i32) + local.get $6 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $7 + local.tee $5 i32.const 1073928572 i32.lt_u if i32.const 1 local.set $2 - local.get $6 + local.get $7 if (result f64) local.get $0 f64.const 1.5707963267341256 @@ -10393,7 +10794,7 @@ local.set $0 i32.const -1 local.set $2 - local.get $7 + local.get $5 i32.const 1073291771 i32.ne if (result f64) @@ -10424,7 +10825,7 @@ f64.const -1.5707963267341256 f64.add local.set $0 - local.get $7 + local.get $5 i32.const 1073291771 i32.ne if (result f64) @@ -10454,13 +10855,14 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - br $~lib/math/rempio2|inlined.2 + local.get $2 + br $~lib/math/rempio2|inlined.3 end - local.get $7 + local.get $5 i32.const 1094263291 i32.lt_u if - local.get $7 + local.get $5 i32.const 20 i32.shr_u local.tee $2 @@ -10469,17 +10871,17 @@ f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $4 + local.tee $3 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $4 + local.get $3 f64.const 6.077100506506192e-11 f64.mul - local.tee $5 - f64.sub local.tee $1 + f64.sub + local.tee $4 i64.reinterpret_f64 i64.const 32 i64.shr_u @@ -10492,12 +10894,12 @@ i32.const 16 i32.gt_u if - local.get $4 + local.get $3 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $3 f64.const 6.077100506303966e-11 f64.mul local.tee $1 @@ -10507,12 +10909,12 @@ local.get $1 f64.sub f64.sub - local.set $5 + local.set $1 local.get $2 local.get $0 - local.get $5 + local.get $1 f64.sub - local.tee $1 + local.tee $4 i64.reinterpret_f64 i64.const 32 i64.shr_u @@ -10525,12 +10927,12 @@ i32.const 49 i32.gt_u if - local.get $4 + local.get $3 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $3 f64.const 2.0222662487111665e-21 f64.mul local.tee $1 @@ -10540,1392 +10942,854 @@ local.get $1 f64.sub f64.sub - local.set $5 + local.set $1 local.get $0 - local.get $5 + local.get $1 f64.sub - local.set $1 + local.set $4 end end - local.get $1 + local.get $4 global.set $~lib/math/rempio2_y0 local.get $0 - local.get $1 + local.get $4 f64.sub - local.get $5 + local.get $1 f64.sub global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $3 i32.trunc_sat_f64_s - local.set $2 - br $~lib/math/rempio2|inlined.2 + br $~lib/math/rempio2|inlined.3 end i32.const 0 - local.get $3 + local.get $6 call $~lib/math/pio2_large_quot local.tee $2 i32.sub local.get $2 - local.get $6 + local.get $7 select - local.set $2 end + local.set $2 global.get $~lib/math/rempio2_y0 + local.tee $3 + local.get $3 + f64.mul + local.tee $0 + local.get $3 + f64.mul + local.set $1 + local.get $3 + local.get $0 global.get $~lib/math/rempio2_y1 - i32.const 1 - local.get $2 - i32.const 1 - i32.and - i32.const 1 - i32.shl - i32.sub - call $~lib/math/tan_kern + local.tee $8 + f64.const 0.5 + f64.mul + local.get $1 + local.get $0 + local.get $0 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $0 + local.get $0 + local.get $0 + f64.mul + f64.mul + local.get $0 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.sub + f64.mul + local.get $8 + f64.sub + local.get $1 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + local.set $4 + f64.const 1 + local.get $0 + f64.const 0.5 + f64.mul + local.tee $1 + f64.sub + local.tee $9 + f64.const 1 + local.get $9 + f64.sub + local.get $1 + f64.sub + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.get $0 + local.get $0 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul + local.get $3 + local.get $8 + f64.mul + f64.sub + f64.add + f64.add + local.set $1 ) - (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) + (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 f64) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) + (local $7 f64) local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 31 - i32.shr_u - local.set $6 - block $folding-inner1 - block $folding-inner0 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1061752794 - i32.le_u - if - local.get $4 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner0 - end - local.get $4 - i32.const 1081824209 - i32.le_u - if - local.get $4 - i32.const 1075235811 - i32.le_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 1.5707963267948966 - f64.add - local.get $1 - f64.const -1.5707963267948966 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner1 - else - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 3.141592653589793 - f64.add - local.get $1 - f64.const -3.141592653589793 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner0 - end - unreachable - end - local.get $4 - i32.const 1088565717 - i32.le_u - if - local.get $4 - i32.const 1085271519 - i32.le_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 4.71238898038469 - f64.add - local.get $1 - f64.const -4.71238898038469 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner1 - else - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 6.283185307179586 - f64.add - local.get $1 - f64.const -6.283185307179586 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner0 - end - unreachable - end - local.get $4 - 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 $4 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $2 - local.get $1 - local.get $2 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $2 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $2 - i32.trunc_sat_f64_s - br $~lib/math/rempio2f|inlined.2 - end - local.get $4 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $7 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $8 - local.get $7 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $7 - i64.load offset=8 - local.set $5 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $4 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - i64.load - local.get $8 - i64.shl - local.get $5 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $8 - i64.const 32 - i64.gt_u - if (result i64) - local.get $5 - local.get $8 - i64.const 32 - i64.sub - i64.shl - local.get $7 - i64.load offset=16 - i64.const 96 - local.get $8 - i64.sub - i64.shr_u - i64.or - else - local.get $5 - i64.const 32 - local.get $8 - i64.sub - i64.shr_u - end - local.get $9 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - 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 $5 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $4 - i32.sub - local.get $4 - local.get $6 - select - end - local.set $4 - global.get $~lib/math/rempio2f_y - local.tee $1 - local.get $1 - f64.mul - local.tee $2 - local.get $2 - f64.mul - local.set $3 - f64.const -1 - local.get $1 - local.get $2 - local.get $1 - f64.mul - local.tee $1 - local.get $2 - f64.const 0.13339200271297674 - f64.mul - f64.const 0.3333313950307914 - f64.add - f64.mul - f64.add - local.get $1 - local.get $3 - f64.mul - local.get $2 - f64.const 0.024528318116654728 - f64.mul - f64.const 0.05338123784456704 - f64.add - local.get $3 - local.get $2 - f64.const 0.009465647849436732 - f64.mul - f64.const 0.002974357433599673 - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.tee $1 - f64.div - local.get $1 - local.get $4 - i32.const 1 - i32.and - select - f32.demote_f64 - return + f64.promote_f32 + local.set $3 + block $~lib/util/math/exp2f_lut|inlined.0 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $5 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + local.tee $6 + i32.const 1072 + i32.ge_u + if + f32.const 0 + local.get $5 + i32.const -8388608 + i32.eq + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + local.get $0 + local.get $0 + f32.add + local.get $6 + i32.const 2040 + i32.ge_u + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + local.get $0 + f32.const 0 + f32.gt + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + f32.const 0 + local.get $0 + f32.const -150 + f32.le + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop end - local.get $2 - local.get $1 - local.get $2 - f64.mul - local.tee $2 - local.get $1 - f64.const 0.13339200271297674 - f64.mul - f64.const 0.3333313950307914 + local.get $3 + f64.const 211106232532992 + f64.add + local.tee $7 + i64.reinterpret_f64 + local.set $4 + local.get $3 + local.get $7 + f64.const -211106232532992 f64.add + f64.sub + local.tee $3 + f64.const 0.6931471806916203 f64.mul + f64.const 1 f64.add - local.get $2 local.get $3 + f64.const 0.05550361559341535 f64.mul - local.get $1 - f64.const 0.024528318116654728 - f64.mul - f64.const 0.05338123784456704 + f64.const 0.2402284522445722 f64.add local.get $3 - local.get $1 - f64.const 0.009465647849436732 + local.get $3 f64.mul - f64.const 0.002974357433599673 - f64.add f64.mul f64.add + local.get $4 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $4 + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 f64.mul - f64.add f32.demote_f64 - return end - f64.const -1 + local.get $1 local.get $2 + call $std/math/check + ) + (func $std/math/test_signf (param $0 f32) (param $1 f32) (result i32) + f32.const 1 + f32.const -1 + local.get $0 + local.get $0 + f32.const 0 + f32.lt + select + local.get $0 + f32.const 0 + f32.gt + select + local.get $1 + f32.const 0 + call $std/math/check + ) + (func $std/math/test_sign (param $0 f64) (param $1 f64) (result i32) + f64.const 1 + f64.const -1 + local.get $0 + local.get $0 + f64.const 0 + f64.lt + select + local.get $0 + f64.const 0 + f64.gt + select + local.get $1 + f64.const 0 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.sign + local.get $1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + ) + (func $~lib/math/pio2_large_quot (param $0 i64) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 f64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + local.get $0 + i64.const 9223372036854775807 + i64.and + i64.const 52 + i64.shr_u + i64.const 1045 + i64.sub + local.tee $1 + i64.const 63 + i64.and + local.set $6 local.get $1 + i64.const 6 + i64.shr_s + i32.wrap_i64 + i32.const 3 + i32.shl + i32.const 5440 + i32.add + local.tee $4 + i64.load + local.set $3 + local.get $4 + i64.load offset=8 + local.set $2 + local.get $4 + i64.load offset=16 + local.set $1 + local.get $6 + i64.const 0 + i64.ne + if + local.get $3 + local.get $6 + i64.shl + local.get $2 + i64.const 64 + local.get $6 + i64.sub + local.tee $7 + i64.shr_u + i64.or + local.set $3 + local.get $2 + local.get $6 + i64.shl + local.get $1 + local.get $7 + i64.shr_u + i64.or + local.set $2 + local.get $1 + local.get $6 + i64.shl + local.get $4 + i64.load offset=24 + local.get $7 + i64.shr_u + i64.or + local.set $1 + end + local.get $0 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.tee $6 + i64.const 4294967295 + i64.and + local.set $7 local.get $2 - f64.mul + i64.const 4294967295 + i64.and + local.tee $8 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $2 + i64.const 32 + i64.shr_u local.tee $2 - local.get $1 - f64.const 0.13339200271297674 - f64.mul - f64.const 0.3333313950307914 - f64.add - f64.mul - f64.add + local.get $7 + i64.mul + local.get $7 + local.get $8 + i64.mul + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.tee $8 + i64.const 4294967295 + i64.and + i64.add + local.set $10 local.get $2 - local.get $3 - f64.mul + local.get $9 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + i64.const 32 + i64.shr_u + i64.add + global.set $~lib/math/res128_hi + local.get $9 local.get $1 - f64.const 0.024528318116654728 - f64.mul - f64.const 0.05338123784456704 - f64.add + i64.const 32 + i64.shr_u + i64.mul + local.tee $1 + local.get $7 + i64.const 4294967295 + i64.and + local.get $10 + i64.const 32 + i64.shl + i64.add + i64.add + local.tee $2 + local.get $1 + i64.lt_u + i64.extend_i32_u + global.get $~lib/math/res128_hi local.get $3 + local.get $6 + i64.mul + i64.add + i64.add + local.tee $3 + i64.const 2 + i64.shl + local.get $2 + i64.const 62 + i64.shr_u + i64.or + local.tee $6 + i64.const 63 + i64.shr_s + local.tee $7 + local.get $2 + i64.const 2 + i64.shl + i64.xor + local.set $2 + local.get $6 + local.get $7 + i64.const 1 + i64.shr_s + i64.xor + local.tee $1 + i64.clz + local.set $8 local.get $1 - f64.const 0.009465647849436732 + local.get $8 + i64.shl + local.get $2 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + local.tee $9 + i64.const 4294967295 + i64.and + local.set $1 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $10 + i64.const 560513588 + i64.mul + local.get $1 + i64.const 3373259426 + i64.mul + local.get $1 + i64.const 560513588 + i64.mul + local.tee $11 + i64.const 32 + i64.shr_u + i64.add + local.tee $12 + i64.const 4294967295 + i64.and + i64.add + local.set $1 + local.get $10 + i64.const 3373259426 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + i64.const 32 + i64.shr_u + i64.add + global.set $~lib/math/res128_hi + local.get $9 + f64.convert_i64_u + f64.const 3.753184150245214e-04 f64.mul - f64.const 0.002974357433599673 - f64.add + local.get $2 + local.get $8 + i64.shl + f64.convert_i64_u + f64.const 3.834951969714103e-04 f64.mul f64.add + i64.trunc_sat_f64_u + local.tee $2 + local.get $11 + i64.const 4294967295 + i64.and + local.get $1 + i64.const 32 + i64.shl + i64.add + local.tee $1 + i64.gt_u + i64.extend_i32_u + global.get $~lib/math/res128_hi + local.tee $9 + i64.const 11 + i64.shr_u + i64.add + f64.convert_i64_u + global.set $~lib/math/rempio2_y0 + local.get $9 + i64.const 53 + i64.shl + local.get $1 + i64.const 11 + i64.shr_u + i64.or + local.get $2 + i64.add + f64.convert_i64_u + f64.const 5.421010862427522e-20 f64.mul - f64.add - f64.div - f32.demote_f64 - ) - (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 f64) + global.set $~lib/math/rempio2_y1 + global.get $~lib/math/rempio2_y0 + i64.const 4372995238176751616 + local.get $8 + i64.const 52 + i64.shl + i64.sub local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 + local.get $6 + i64.xor + i64.const -9223372036854775808 i64.and - local.tee $4 + i64.or f64.reinterpret_i64 - local.set $5 - local.get $4 - i64.const 32 - i64.shr_u + local.tee $5 + f64.mul + global.set $~lib/math/rempio2_y0 + global.get $~lib/math/rempio2_y1 + local.get $5 + f64.mul + global.set $~lib/math/rempio2_y1 + local.get $3 + i64.const 62 + i64.shr_s + local.get $7 + i64.sub i32.wrap_i64 - local.tee $3 - i32.const 1071748074 - i32.gt_u - if (result f64) - local.get $3 - i32.const 1077149696 - i32.gt_u - if (result f64) - f64.const 1 - f64.const 0 - local.get $5 - f64.div - f64.sub - else - f64.const 1 - f64.const 2 - local.get $5 - local.get $5 - f64.add - call $~lib/math/NativeMath.expm1 - f64.const 2 - f64.add - f64.div - f64.sub - end - else - local.get $3 - i32.const 1070618798 - i32.gt_u - if (result f64) - local.get $5 - local.get $5 - f64.add - call $~lib/math/NativeMath.expm1 - local.tee $5 - local.get $5 - f64.const 2 - f64.add - f64.div - else - local.get $3 - i32.const 1048576 - i32.ge_u - if (result f64) - local.get $5 - f64.const -2 - f64.mul - call $~lib/math/NativeMath.expm1 - local.tee $5 - f64.neg - local.get $5 - f64.const 2 - f64.add - f64.div - else - local.get $5 - end - end - end + ) + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + (local $1 i32) + (local $2 i64) + i64.const -7046029254386353131 local.get $0 - f64.copysign - local.get $1 + local.get $0 + i64.eqz + select + local.tee $0 + i64.const 33 + i64.shr_u + local.get $0 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/dom/Math.tanh - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_tanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - f32.reinterpret_i32 - local.set $4 - local.get $3 - i32.const 1057791828 - i32.gt_u - if (result f32) - local.get $3 - i32.const 1092616192 - i32.gt_u - if (result f32) - f32.const 0 - local.get $4 - f32.div - f32.const 1 - f32.add - else - f32.const 1 - f32.const 2 - local.get $4 - local.get $4 - f32.add - call $~lib/math/NativeMathf.expm1 - f32.const 2 - f32.add - f32.div - f32.sub - end - else - local.get $3 - i32.const 1048757624 - i32.gt_u - if (result f32) - local.get $4 - local.get $4 - f32.add - call $~lib/math/NativeMathf.expm1 - local.tee $4 - local.get $4 - f32.const 2 - f32.add - f32.div - else - local.get $3 - i32.const 8388608 - i32.ge_u - if (result f32) - local.get $4 - f32.const -2 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.tee $4 - f32.neg - local.get $4 - f32.const 2 - f32.add - f32.div - else - local.get $4 - end - end - end + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + global.set $~lib/math/random_state1_64 local.get $0 - f32.copysign + i32.wrap_i64 + i32.const 1831565813 + i32.add + local.tee $1 + i32.const 1 + i32.or local.get $1 - local.get $2 - call $std/math/check + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.mul + local.tee $1 + i32.const 61 + i32.or + local.get $1 + local.get $1 + i32.const 7 + i32.shr_u + i32.xor + i32.mul + local.get $1 + i32.add + local.get $1 + i32.xor + local.tee $1 + i32.const 14 + i32.shr_u + local.get $1 + i32.xor + global.set $~lib/math/random_state0_32 + global.get $~lib/math/random_state0_32 + i32.const 1831565813 + i32.add + local.tee $1 + i32.const 1 + i32.or + local.get $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.mul + local.tee $1 + i32.const 61 + i32.or + local.get $1 + local.get $1 + i32.const 7 + i32.shr_u + i32.xor + i32.mul + local.get $1 + i32.add + local.get $1 + i32.xor + local.tee $1 + i32.const 14 + i32.shr_u + local.get $1 + i32.xor + global.set $~lib/math/random_state1_32 + i32.const 1 + global.set $~lib/math/random_seeded ) - (func $~lib/math/NativeMath.sincos (param $0 f64) - (local $1 f64) - (local $2 f64) + (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $5 f64) + (local $6 f64) (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) local.get $0 i64.reinterpret_f64 - local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 local.tee $3 - i32.const 31 - i32.shr_u - local.set $6 - local.get $3 i32.const 2147483647 i32.and - local.tee $3 - i32.const 1072243195 - i32.le_u + i32.const 1072010280 + i32.ge_u + local.tee $4 if + f64.const 0.7853981633974483 local.get $3 - i32.const 1044816030 - i32.lt_u - if + i32.const 0 + i32.lt_s + if (result f64) + local.get $1 + f64.neg + local.set $1 + local.get $0 + f64.neg + else local.get $0 - global.set $~lib/math/NativeMath.sincos_sin - f64.const 1 - global.set $~lib/math/NativeMath.sincos_cos - return end - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $1 - local.get $0 - f64.mul - local.get $1 - local.get $1 - local.get $1 - f64.const 2.7557313707070068e-06 - f64.mul - f64.const -1.984126982985795e-04 - f64.add - f64.mul - f64.const 0.00833333333332249 - f64.add - local.get $1 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - f64.mul - local.get $1 - f64.const 1.58969099521155e-10 - f64.mul - f64.const -2.5050760253406863e-08 - f64.add - f64.mul - f64.add - f64.mul - f64.const -0.16666666666666632 - f64.add - f64.mul - f64.add - global.set $~lib/math/NativeMath.sincos_sin - f64.const 1 - local.get $1 - f64.const 0.5 - f64.mul - local.tee $7 - f64.sub - local.tee $8 - f64.const 1 - local.get $8 - f64.sub - local.get $7 f64.sub + f64.const 3.061616997868383e-17 local.get $1 - local.get $1 - local.get $1 - local.get $1 - f64.const 2.480158728947673e-05 - f64.mul - f64.const -0.001388888888887411 - f64.add - f64.mul - f64.const 0.0416666666666666 - f64.add - f64.mul - local.get $2 - local.get $2 - f64.mul - local.get $1 - local.get $1 - f64.const -1.1359647557788195e-11 - f64.mul - f64.const 2.087572321298175e-09 - f64.add - f64.mul - f64.const -2.7557314351390663e-07 - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0 - f64.mul f64.sub f64.add - f64.add - global.set $~lib/math/NativeMath.sincos_cos - return - end - local.get $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - global.set $~lib/math/NativeMath.sincos_sin - local.get $0 - global.set $~lib/math/NativeMath.sincos_cos - return - end - block $~lib/math/rempio2|inlined.3 (result i32) - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1073928572 - i32.lt_u - if - i32.const 1 - local.set $3 - local.get $6 - if (result f64) - local.get $0 - f64.const 1.5707963267341256 - f64.add - local.set $0 - i32.const -1 - local.set $3 - local.get $4 - 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 $1 - f64.const 2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - end - else - local.get $0 - f64.const -1.5707963267341256 - f64.add - local.set $0 - local.get $4 - 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 $1 - f64.const -2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const -2.0222662487959506e-21 - f64.add - end - end - local.get $0 - global.set $~lib/math/rempio2_y0 - global.set $~lib/math/rempio2_y1 - local.get $3 - br $~lib/math/rempio2|inlined.3 - end - local.get $4 - i32.const 1094263291 - i32.lt_u - if - local.get $4 - i32.const 20 - i32.shr_u - local.tee $3 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $7 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $7 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $1 - f64.sub - local.tee $2 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u - if - local.get $7 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $7 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $1 - local.get $3 - local.get $0 - local.get $1 - f64.sub - local.tee $2 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if - local.get $7 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $7 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $1 - local.get $0 - local.get $1 - f64.sub - local.set $2 - end - end - local.get $2 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $2 - f64.sub - local.get $1 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $7 - i32.trunc_sat_f64_s - br $~lib/math/rempio2|inlined.3 - end - i32.const 0 - local.get $5 - call $~lib/math/pio2_large_quot - local.tee $3 - i32.sub - local.get $3 - local.get $6 - select - end - local.set $3 - global.get $~lib/math/rempio2_y0 - local.tee $7 - local.get $7 - f64.mul - local.tee $8 - local.tee $0 - local.get $7 - f64.mul - local.set $1 - local.get $7 - local.get $0 - global.get $~lib/math/rempio2_y1 - local.tee $9 - f64.const 0.5 - f64.mul - local.get $1 - local.get $0 - local.get $0 - f64.const 2.7557313707070068e-06 - f64.mul - f64.const -1.984126982985795e-04 - f64.add - f64.mul - f64.const 0.00833333333332249 - f64.add - local.get $0 + local.set $0 + f64.const 0 + local.set $1 + end local.get $0 local.get $0 f64.mul + local.tee $5 + local.get $5 f64.mul + local.set $6 + local.get $0 + local.get $1 + local.get $5 + local.get $5 local.get $0 - f64.const 1.58969099521155e-10 f64.mul - f64.const -2.5050760253406863e-08 - f64.add + local.tee $7 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + f64.const -1.8558637485527546e-05 f64.mul + f64.const 7.817944429395571e-05 f64.add f64.mul - f64.sub - f64.mul - local.get $9 - f64.sub - local.get $1 - f64.const -0.16666666666666632 + f64.const 5.880412408202641e-04 + f64.add f64.mul - f64.sub - f64.sub - local.tee $2 - local.set $0 - f64.const 1 - local.get $8 - f64.const 0.5 + f64.const 3.5920791075913124e-03 + f64.add f64.mul - local.tee $1 - f64.sub - local.tee $10 - f64.const 1 - local.get $10 - f64.sub - local.get $1 - f64.sub - local.get $8 - local.get $8 - local.get $8 - local.get $8 - f64.const 2.480158728947673e-05 + f64.const 0.021869488294859542 + f64.add f64.mul - f64.const -0.001388888888887411 + f64.const 0.13333333333320124 f64.add + local.get $5 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + f64.const 2.590730518636337e-05 f64.mul - f64.const 0.0416666666666666 + f64.const 7.140724913826082e-05 f64.add f64.mul - local.get $8 - local.get $8 + f64.const 2.464631348184699e-04 + f64.add f64.mul - local.tee $1 - local.get $1 + f64.const 1.4562094543252903e-03 + f64.add f64.mul - local.get $8 - local.get $8 - f64.const -1.1359647557788195e-11 + f64.const 0.0088632398235993 + f64.add f64.mul - f64.const 2.087572321298175e-09 + f64.const 0.05396825397622605 f64.add f64.mul - f64.const -2.7557314351390663e-07 f64.add f64.mul + local.get $1 f64.add f64.mul + f64.add local.get $7 - local.get $9 + f64.const 0.3333333333333341 f64.mul - f64.sub f64.add + local.tee $1 f64.add - local.set $1 - local.get $3 - i32.const 1 - i32.and + local.set $5 + local.get $4 if - local.get $1 - local.set $0 + f64.const 1 + local.get $3 + i32.const 30 + i32.shr_s + i32.const 2 + i32.and + f64.convert_i32_s + f64.sub local.get $2 - f64.neg - local.set $1 - end - local.get $3 - i32.const 2 - i32.and - if (result f64) - local.get $1 - f64.neg - local.set $1 - local.get $0 - f64.neg - else + f64.convert_i32_s + local.tee $6 local.get $0 + local.get $5 + local.get $5 + f64.mul + local.get $5 + local.get $6 + f64.add + f64.div + local.get $1 + f64.sub + f64.sub + f64.const 2 + f64.mul + f64.sub + f64.mul + return end - global.set $~lib/math/NativeMath.sincos_sin - local.get $1 - global.set $~lib/math/NativeMath.sincos_cos - ) - (func $std/math/test_sincos (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) - (local $5 f64) - local.get $0 - f64.reinterpret_i64 - call $~lib/math/NativeMath.sincos - global.get $~lib/math/NativeMath.sincos_sin - local.get $1 - f64.reinterpret_i64 local.get $2 - f64.reinterpret_i64 - call $std/math/check - if - global.get $~lib/math/NativeMath.sincos_cos - local.get $3 - f64.reinterpret_i64 - local.get $4 - f64.reinterpret_i64 - call $std/math/check - drop - end - ) - (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) - (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 i64) - local.get $0 - local.get $1 - f64.add - local.tee $4 - local.get $4 - f64.sub - f64.const 0 - f64.ne + i32.const 1 + i32.eq if - f64.const 0 + local.get $5 return end - local.get $0 + f64.const -1 + local.get $5 + f64.div + local.tee $6 i64.reinterpret_f64 - local.tee $3 - i64.const 52 - i64.shr_u - i64.const 2047 + i64.const -4294967296 i64.and - local.tee $5 - i64.const 1053 - i64.le_u - if (result i32) - local.get $0 - i32.trunc_sat_f64_s - else - local.get $5 - i64.const 1106 - i64.le_u - if (result i32) - i32.const 0 - local.get $3 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.get $5 - i64.const 1043 - i64.sub - i64.shl - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.sub - local.get $2 - local.get $3 - i64.const 0 - i64.lt_s - select - else - i32.const 0 - end - end - local.get $1 + f64.reinterpret_i64 + local.tee $7 + local.get $6 + local.get $7 + local.get $5 i64.reinterpret_f64 - local.tee $3 - i64.const 52 - i64.shr_u - i64.const 2047 + i64.const -4294967296 i64.and + f64.reinterpret_i64 local.tee $5 - i64.const 1053 - i64.le_u - if (result i32) - local.get $1 - i32.trunc_sat_f64_s - else - local.get $5 - i64.const 1106 - i64.le_u - if (result i32) - i32.const 0 - local.get $3 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.get $5 - i64.const 1043 - i64.sub - i64.shl - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.sub - local.get $2 - local.get $3 - i64.const 0 - i64.lt_s - select - else - i32.const 0 - end - end - 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 - 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 + f64.mul + f64.const 1 + f64.add + local.get $7 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 - if - 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 - br $while-continue|1 - end - end - local.get $2 + local.get $5 + local.get $0 + f64.sub + f64.sub + f64.mul + f64.add + f64.mul + f64.add + ) + (func $~start + call $start:std/math ) (func $start:std/math (local $0 f64) @@ -55547,66 +55411,26 @@ call $~lib/builtins/abort unreachable end - i64.const -4602641186874283791 - i64.const -4616392916911125550 - i64.const -4628956453976145920 - i64.const -4626592471448962314 - i64.const -4630808324688838656 - call $std/math/test_sincos - i64.const 4616578323568966759 - i64.const -4616789907589610460 - i64.const -4632356642145435648 - i64.const -4623234040091605244 - i64.const -4630954342839484416 - call $std/math/test_sincos - i64.const -4602464091242371353 - i64.const -4617413764247143988 - i64.const -4630245256623816704 - i64.const -4620663195860462557 - i64.const -4641537901929168896 - call $std/math/test_sincos - i64.const -4604332007749985084 - i64.const -4625343132137557201 - i64.const -4629629133364658176 - i64.const 4606905765568473756 - i64.const -4621075345754292224 - call $std/math/test_sincos - i64.const 4621406507342668262 - i64.const 4594826987695694788 - i64.const -4639197561901547520 - i64.const -4616301417154991689 - i64.const 4602463851227643904 - call $std/math/test_sincos - i64.const 4604137858433287319 - i64.const 4603711805189578650 - i64.const -4631518618864058368 - i64.const 4605279855905985745 - i64.const 4593746800099196928 - call $std/math/test_sincos - i64.const -4622375691843501615 - i64.const -4622575858842575876 - i64.const -4623091339515396096 - i64.const 4606448054996611351 - i64.const -4624994927539912704 - call $std/math/test_sincos - i64.const 4603235101512779211 - i64.const 4602973141375866126 - i64.const -4623304571219869696 - i64.const 4605798183832360369 - i64.const -4624249509122146304 - call $std/math/test_sincos - i64.const 4605148163534189634 - i64.const 4604472244479532466 - i64.const -4621996155604041728 - i64.const 4604615492473651755 - i64.const -4632555521679818752 - call $std/math/test_sincos - i64.const -4619083057392940530 - i64.const -4619541816298850243 - i64.const -4622804297187328000 - i64.const 4605185968576882368 - i64.const 4599236402884902912 - call $std/math/test_sincos + f64.const -8.06684839057968 + call $~lib/math/NativeMath.sincos + f64.const 4.345239849338305 + call $~lib/math/NativeMath.sincos + f64.const -8.38143342755525 + call $~lib/math/NativeMath.sincos + f64.const -6.531673581913484 + call $~lib/math/NativeMath.sincos + f64.const 9.267056966972586 + call $~lib/math/NativeMath.sincos + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.sincos + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.sincos + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.sincos + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.sincos + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.sincos f64.const 2 f64.const 4 call $~lib/math/NativeMath.imul @@ -56180,7 +56004,4 @@ unreachable end ) - (func $~start - call $start:std/math - ) ) diff --git a/tests/compiler/std/mod.release.wat b/tests/compiler/std/mod.release.wat index 1fbd3592bf..568ccb771c 100644 --- a/tests/compiler/std/mod.release.wat +++ b/tests/compiler/std/mod.release.wat @@ -1,11 +1,11 @@ (module (type $0 (func)) - (type $1 (func (param f64 f64) (result f64))) + (type $1 (func (param i32 i32 i32 i32))) (type $2 (func (param f64 f64 f64) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param f32 f32 f32) (result i32))) - (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) + (type $3 (func (param f32 f32 f32) (result i32))) + (type $4 (func (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s") @@ -507,6 +507,9 @@ f32.eq end ) + (func $~start + call $start:std/mod + ) (func $start:std/mod f64.const 3 f64.const 2 @@ -2264,7 +2267,4 @@ unreachable end ) - (func $~start - call $start:std/mod - ) ) diff --git a/tests/compiler/std/new.release.wat b/tests/compiler/std/new.release.wat index ac28d507e5..98131dbec6 100644 --- a/tests/compiler/std/new.release.wat +++ b/tests/compiler/std/new.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) (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)) @@ -33,57 +33,6 @@ (data $8 (i32.const 1440) "\05\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $std/new/aClass - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -628,6 +577,171 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/new/AClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -742,85 +856,152 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $std/new/aClass + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34240 - i32.const 35812 + ) + (func $~start + (local $0 i32) memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34240 - global.set $~lib/rt/tlsf/ROOT + i32.const 16 + i32.shl + i32.const 34232 + 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 + 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 1464 + i32.lt_s + if + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 2 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std/new/aClass ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1082,63 +1263,6 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) (local $1 i32) @@ -1368,128 +1492,4 @@ i64.store align=1 local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $std/new/AClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - memory.size - i32.const 16 - i32.shl - i32.const 34232 - 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 - 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 1464 - i32.lt_s - if - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 2 - f32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.add - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 3 - f32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $std/new/aClass - ) ) diff --git a/tests/compiler/std/operator-overloading.release.wat b/tests/compiler/std/operator-overloading.release.wat index 41c6112228..d352f0f211 100644 --- a/tests/compiler/std/operator-overloading.release.wat +++ b/tests/compiler/std/operator-overloading.release.wat @@ -5,9 +5,9 @@ (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -107,48 +107,6 @@ (data $11 (i32.const 1584) "\08\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/visitRoots - (local $0 i32) - (local $1 i32) - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -301,330 +259,517 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + 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 $std/operator-overloading/TesterElementAccess#__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 1620 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 + i32.const 34416 + i32.const 34464 + 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 $1 - i32.load offset=8 - local.set $5 + i32.store local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 + call $~lib/string/String.__eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 end - local.get $1 - local.get $0 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 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 $6 i32) - local.get $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + 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 $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load - local.tee $3 - i32.const 1 + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.const 4 - i32.add + call $~lib/rt/tlsf/removeBlock local.get $1 i32.load + local.tee $3 i32.const -4 i32.and - i32.add + i32.const 28 + i32.sub local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.const 28 + i32.or i32.store local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.const 32 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $3 + local.get $4 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else local.get $1 - call $~lib/rt/tlsf/removeBlock + local.get $3 + i32.const -2 + i32.and + i32.store local.get $1 - local.get $6 i32.const 4 i32.add - local.get $3 + local.get $1 + i32.load i32.const -4 i32.and i32.add - local.tee $3 + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 8 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 local.get $2 - i32.const 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 - local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 i32.const 4 i32.add - local.get $2 i32.add - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub + global.set $~lib/rt/itcms/total local.get $1 - i32.store - local.get $2 + i32.const 20 + i32.add + local.tee $0 + i64.const 0 + i64.store align=1 + local.get $0 + ) + (func $std/operator-overloading/TesterInlineStatic#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 + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + 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 $std/operator-overloading/TesterInlineInstance#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 + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + 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 $std/operator-overloading/TesterElementAccess#__set (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 + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + 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 $1 + i32.store + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.store + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -632,1868 +777,1723 @@ if i32.const 0 i32.const 1392 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34400 - i32.const 0 - i32.store - i32.const 35968 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34400 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34400 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/operator-overloading/TesterElementAccess + block $std/operator-overloading/TesterInlineInstance + block $std/operator-overloading/TesterInlineStatic + block $std/operator-overloading/Tester + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end + return end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + return end + return end - i32.const 34400 - i32.const 35972 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34400 - global.set $~lib/rt/tlsf/ROOT + unreachable ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/string/String.__eq (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + 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.const 1536 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + 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 $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.store + local.get $2 + i32.const 1532 + i32.load + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1536 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.store offset=4 + i32.const 1 + local.get $0 + local.tee $1 + i32.const 7 + i32.and + local.get $2 + local.tee $0 + i32.const 4 + i32.lt_u + select + i32.eqz + if + loop $do-loop|0 + local.get $1 + i64.load + local.get $3 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + 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-loop|0 end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 + end + block $__inlined_func$~lib/util/string/compareImpl$199 loop $while-continue|1 local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.tee $2 + i32.const 1 + i32.sub + local.set $0 + local.get $2 if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and + i32.load16_u + local.tee $4 + local.get $3 + i32.load16_u + local.tee $5 + i32.sub + local.set $2 + local.get $4 + local.get $5 i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 + br_if $__inlined_func$~lib/util/string/compareImpl$199 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $3 + i32.const 2 + i32.add + local.set $3 br $while-continue|1 end end i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34388 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + local.set $2 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne if i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 1392 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34388 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34388 - i32.ge_u + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34400 + i32.const 0 + i32.store + i32.const 35968 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34400 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34400 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.add + local.set $1 + br $for-loop|1 end end - i32.const 10 - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + end + i32.const 34400 + i32.const 35972 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34400 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + i32.const 1 + local.set $2 + local.get $0 + i32.const 2 + i32.eq if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $1 - loop $do-loop|0 + 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 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz + i32.const 32 + i32.lt_s if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 + 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 - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 + loop $while-continue|1 local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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|1 end end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + local.get $2 + ) + (func $std/operator-overloading/Tester.notEquals (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 1620 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.store local.get $1 i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or + i32.ne + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 - i32.const -2 - i32.and i32.store local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.load offset=4 + i32.ne + else + i32.const 0 end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 8 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i64.const 0 - i64.store align=1 - local.get $0 + global.set $~lib/memory/__stack_pointer ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 1 - local.set $2 - local.get $0 - i32.const 2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s if + i32.const 34416 + i32.const 34464 i32.const 1 - local.get $1 - i32.shl - i32.const 0 - local.get $1 - i32.const 32 - i32.lt_u - select - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.le_s - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer 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 + i32.store local.get $0 - i32.const 1 - i32.eq - i32.or - return - else + i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 + i32.store + local.get $1 + i32.load offset=4 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 + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:std/operator-overloading + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount return - else - local.get $1 - i32.const 32 - i32.lt_s + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne 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 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34388 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if local.get $0 local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 + i32.const -4 i32.and - select - local.set $2 local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 + i32.or + i32.store offset=4 local.get $0 - i32.mul - local.set $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 + i32.load offset=4 + i32.const -4 i32.and - select - local.set $2 + local.set $0 + br $while-continue|2 end - local.get $2 - return end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - end - loop $while-continue|1 - local.get $1 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and - select - local.set $2 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz 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|1 - end - end - local.get $2 - ) - (func $~lib/rt/__visit_globals - (local $0 i32) - global.get $std/operator-overloading/a1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/a2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/a - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/f1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/f2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/f - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/p1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/p2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/p - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34388 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34388 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $std/operator-overloading/eq2 + i32.const 0 + ) + (func $~lib/rt/__visit_globals + (local $0 i32) + global.get $std/operator-overloading/a1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/eq3 + global.get $std/operator-overloading/a2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/eq4 + global.get $std/operator-overloading/a local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/gt1 + global.get $std/operator-overloading/s1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/gt2 + global.get $std/operator-overloading/s2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/gte1 + global.get $std/operator-overloading/s local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/gte2 + global.get $std/operator-overloading/m1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/le1 + global.get $std/operator-overloading/m2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/le2 + global.get $std/operator-overloading/m local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/leq1 + global.get $std/operator-overloading/d1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/leq2 + global.get $std/operator-overloading/d2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/shr + global.get $std/operator-overloading/d local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/sres + global.get $std/operator-overloading/f1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/shu + global.get $std/operator-overloading/f2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/ures + global.get $std/operator-overloading/f local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/shl + global.get $std/operator-overloading/p1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/pos + global.get $std/operator-overloading/p2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/pres + global.get $std/operator-overloading/p local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/neg + global.get $std/operator-overloading/n1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/nres + global.get $std/operator-overloading/n2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/not + global.get $std/operator-overloading/n local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/res + global.get $std/operator-overloading/o1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/excl + global.get $std/operator-overloading/o2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/o local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/tmp + global.get $std/operator-overloading/x1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/ais1 + global.get $std/operator-overloading/x2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/ais2 + global.get $std/operator-overloading/x local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/ais + global.get $std/operator-overloading/eq1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/aii1 + global.get $std/operator-overloading/eq2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/aii2 + global.get $std/operator-overloading/eq3 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/aii + global.get $std/operator-overloading/eq4 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/tea + global.get $std/operator-overloading/gt1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $std/operator-overloading/TesterElementAccess - block $std/operator-overloading/TesterInlineInstance - block $std/operator-overloading/TesterInlineStatic - block $std/operator-overloading/Tester - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:std/operator-overloading - ) - (func $std/operator-overloading/Tester#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 - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - 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 $std/operator-overloading/Tester.equals (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 1620 - i32.lt_s + end + global.get $std/operator-overloading/gt2 + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gte1 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte2 + local.tee $0 + if local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.eq - else - i32.const 0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/Tester.notEquals (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 1620 - i32.lt_s + global.get $std/operator-overloading/le1 + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.ne - if (result i32) - global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/le2 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq1 + local.tee $0 + if local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.ne - else - i32.const 0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/TesterInlineStatic#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 - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/leq2 + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - 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 $std/operator-overloading/TesterInlineInstance#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 - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/shr + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - 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/string/String.__eq (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/sres + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.const 1536 - i32.eq + global.get $std/operator-overloading/shu + local.tee $0 if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ures + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shl + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pos + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end - block $folding-inner0 + global.get $std/operator-overloading/pres + local.tee $0 + if local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/neg + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/nres + local.tee $0 + if local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.store - local.get $2 - i32.const 1532 - i32.load - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/not + local.tee $0 + if local.get $0 - i32.store - i32.const 1536 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.store offset=4 - i32.const 1 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/res + local.tee $0 + if local.get $0 - local.tee $1 - i32.const 7 - i32.and - local.get $2 - local.tee $0 - i32.const 4 - i32.lt_u - select - i32.eqz - if - loop $do-loop|0 - local.get $1 - i64.load - local.get $3 - i64.load - i64.eq - if - local.get $1 - i32.const 8 - i32.add - local.set $1 - 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-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$199 - loop $while-continue|1 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if - local.get $1 - i32.load16_u - local.tee $4 - local.get $3 - i32.load16_u - local.tee $5 - i32.sub - local.set $2 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$199 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|1 - end - end - i32.const 0 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.eqz - return + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $std/operator-overloading/TesterElementAccess#__set (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 - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/excl + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/string/String.__eq + global.get $std/operator-overloading/incdec + local.tee $0 if - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tmp + local.tee $0 + if local.get $0 - local.get $2 - i32.store - else - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais1 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais2 + local.tee $0 + if local.get $0 - local.get $2 - i32.store offset=4 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/TesterElementAccess#__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 1620 - i32.lt_s + global.get $std/operator-overloading/ais + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/string/String.__eq - if (result i32) - global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii1 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii2 + local.tee $0 + if local.get $0 - i32.load - else - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tea + local.tee $0 + if local.get $0 - i32.load offset=4 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit ) (func $start:std/operator-overloading (local $0 i32) diff --git a/tests/compiler/std/pointer.release.wat b/tests/compiler/std/pointer.release.wat index d014421032..59ac04a1e5 100644 --- a/tests/compiler/std/pointer.release.wat +++ b/tests/compiler/std/pointer.release.wat @@ -12,6 +12,9 @@ (data $0.1 (i32.const 1048) "\02\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 $~start + call $start:std/pointer + ) (func $start:std/pointer (local $0 i32) (local $1 i32) @@ -366,7 +369,4 @@ unreachable end ) - (func $~start - call $start:std/pointer - ) ) diff --git a/tests/compiler/std/set.release.wat b/tests/compiler/std/set.release.wat index 34992078ce..e48a3d3f19 100644 --- a/tests/compiler/std/set.release.wat +++ b/tests/compiler/std/set.release.wat @@ -3,24 +3,24 @@ (type $1 (func (param i32 i32) (result i32))) (type $2 (func)) (type $3 (func (result i32))) - (type $4 (func (param i32))) - (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 i64))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32))) + (type $6 (func (param i32 i64))) + (type $7 (func (param i32 i32 i32) (result i32))) (type $8 (func (param i32 i32 i32))) (type $9 (func (param i32 i32 i32 i32))) - (type $10 (func (param i32 i32 i64))) - (type $11 (func (param i32 i64 i32) (result i32))) - (type $12 (func (param i32 i64) (result i32))) - (type $13 (func (param i32 i32) (result i64))) - (type $14 (func (param i32 f32))) - (type $15 (func (param i32 f64))) - (type $16 (func (param i32 f32 i32) (result i32))) + (type $10 (func (param i32 i64) (result i32))) + (type $11 (func (param i32 f64))) + (type $12 (func (param i32 f32))) + (type $13 (func (param i32 i64 i32) (result i32))) + (type $14 (func (param i32 i32 i64))) + (type $15 (func (param i32 i32) (result i64))) + (type $16 (func (param i32 f64) (result i32))) (type $17 (func (param i32 f32) (result i32))) - (type $18 (func (param i32 i32) (result f32))) - (type $19 (func (param i32 f64 i32) (result i32))) - (type $20 (func (param i32 f64) (result i32))) - (type $21 (func (param i32 i32) (result f64))) + (type $18 (func (param i32 f64 i32) (result i32))) + (type $19 (func (param i32 f32 i32) (result i32))) + (type $20 (func (param i32 i32) (result f64))) + (type $21 (func (param i32 i32) (result f32))) (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)) @@ -55,1720 +55,1547 @@ (data $12 (i32.const 1648) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00H\08\00\00B\08\00\00H\00\00\00B\00\00\00\88\08\00\00\82\08\00\00\88\00\00\00\82\00\00\00\08\t\00\00\02\t\00\00\08\01\00\00\02\01\00\00\08\n\00\00\02\n\00\00\08\02\00\00\02\02\00\00\08\19\00\00\02\19\00\00\08\1a\00\00\02\1a") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 + (func $~lib/set/Set#get:size (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 1748 + i32.lt_s if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$904 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34516 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$904 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + i32.const 34544 + i32.const 34592 i32.const 1 - else - local.get $1 - i32.const 1648 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1652 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 + i32.store local.get $0 - i32.store offset=8 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 i32.eqz if return end - global.get $~lib/rt/itcms/white local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + 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 $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and i32.eq if local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + 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 + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + (func $~lib/arraybuffer/ArrayBuffer#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 1748 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 + i32.const 1456 + i32.const 1504 + i32.const 52 + i32.const 43 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (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 $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 i32.add - local.tee $4 - i32.load local.tee $2 - i32.const 1 - i32.and + i32.const 1073741820 + i32.gt_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.tee $4 - i32.load - local.set $2 + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1392 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1392 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 i32.const 4 - i32.shr_u + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - i32.const 31 - i32.const 1073741820 local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub + i32.load + i32.const -4 + i32.and + i32.add local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.load + i32.const -3 + i32.and + i32.store end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + 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 $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 + local.get $3 i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl + i32.const 3 + i32.and i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 19 - i32.add - i32.const -16 + 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.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill local.get $1 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - return + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.tee $3 - i32.const 2 - i32.store + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - local.get $3 - i32.store offset=1568 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $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 + call $~lib/set/Set#find i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (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 1748 + i32.lt_s if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34528 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 36096 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $0 + local.get $1 + 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 $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 34528 - i32.const 36100 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34528 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $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 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34516 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34516 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34516 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + (func $~lib/set/Set#has (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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $0 + local.get $1 + 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 $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 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + 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 + call $~lib/set/Set#find i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $0 local.get $1 - i32.const 256 - i32.lt_u + 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 $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (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 1748 + i32.lt_s if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 34544 + i32.const 34592 + 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.store + local.get $0 + local.get $1 + 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 $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 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $0 local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) + (local $2 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 1748 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 + i32.const 34544 + i32.const 34592 + 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.store local.get $0 + local.get $1 + local.get $1 + 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 - i32.const 2 - i32.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u local.get $0 - i32.const 1073741804 - i32.ge_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (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 1748 + i32.lt_s if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + 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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $2 + i32.shr_u + i32.gt_u if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 + local.get $1 + i32.const 1073741820 local.get $2 - local.get $3 + i32.shr_u + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select local.get $2 + i32.shl + local.set $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 + i32.const 1073741820 + local.get $5 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew$893 + local.get $4 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u if - unreachable + local.get $3 + local.get $1 + i32.store offset=16 + local.get $4 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$893 end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $4 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $1 + local.get $3 + i32.lt_u + select + memory.copy end - local.get $4 local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + i32.ne if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link end + local.get $0 + local.get $1 + i32.store offset=8 end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.const 15 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $6 - i32.const -4 - i32.and - local.get $5 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/rt/itcms/visitCount end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 + ) + (func $~lib/set/Set#clear (param $0 i32) + (local $1 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.or i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 + 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 + local.get $0 + i32.store + local.get $0 i32.const 3 - i32.and - i32.or i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 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 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - memory.fill - local.get $1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz + (func $~lib/set/Set#add (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - return + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 295 - 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 + global.get $~lib/memory/__stack_pointer 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.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 i32.eq if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - 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 1748 - i32.lt_s - br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.load offset=20 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner2 + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 + i32.store offset=4 + 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.store8 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34516 - 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/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/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 + local.get $0 + i32.store + local.get $2 + local.get $1 + 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.store 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - global.set $~lib/rt/itcms/threshold + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1786,153 +1613,179 @@ 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 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 local.get $1 - i32.store offset=8 - local.get $0 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (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 1748 - i32.lt_s + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + call $~lib/set/Set#find + i32.eqz if - i32.const 34544 - i32.const 34592 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $3 + local.get $1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer 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 $1 - i32.const 255 - i32.and - i32.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 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $2 + 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.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (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.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1947,236 +1800,341 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 local.get $1 - i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761397 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 16 i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor + i32.xor local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - local.get $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load8_s - local.tee $8 - i32.store8 - local.get $2 - local.get $5 - local.get $1 - local.get $8 - 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|0 + call $~lib/set/Set#rehash end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + 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.store end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + 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) global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 + i32.store local.get $0 - i32.load offset=20 - i32.store offset=16 + local.get $1 + 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 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + 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.store + end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) @@ -2237,7 +2195,7 @@ local.get $2 i32.xor local.tee $3 - call $~lib/set/Set#find + call $~lib/set/Set#find i32.eqz if global.get $~lib/memory/__stack_pointer @@ -2355,248 +2313,16 @@ i32.store end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#get:size (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - 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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - local.get $2 - i32.shl - local.set $1 - local.get $3 - if - i32.const 1073741820 - local.get $5 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.set $1 - end - block $__inlined_func$~lib/rt/itcms/__renew$893 - local.get $4 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u - if - local.get $3 - local.get $1 - i32.store offset=16 - local.get $4 - local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$893 - end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $4 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $1 - local.get $3 - i32.lt_u - select - memory.copy - end - local.get $2 - local.get $4 - i32.ne - if - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $1 - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - 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 130 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2611,102 +2337,180 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#get:length (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 + 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 - global.set $~lib/memory/__stack_pointer - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + call $~lib/set/Set#find + i32.eqz if - i32.const 34544 - i32.const 34592 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $3 + local.get $1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $2 + 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 - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (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) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2731,119 +2535,340 @@ local.get $0 local.get $1 local.get $1 - i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761397 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 i32.const 15 i32.shr_u - local.get $1 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 i32.const 13 i32.shr_u - local.get $1 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 i32.const 16 i32.shr_u - local.get $1 + local.get $2 i32.xor - call $~lib/set/Set#find - local.tee $1 + local.tee $3 + call $~lib/set/Set#find i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + 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.store end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + 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) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 + i32.const 8 i32.sub - i32.store offset=20 + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 local.get $1 - i32.const 1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 i32.add - i32.const 4 - local.get $0 - i32.load offset=20 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.tee $2 + i32.const 15 + i32.shr_u local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=20 + i32.load offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 + i32.store offset=4 + 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.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 local.get $1 - call $~lib/set/Set#rehash + 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.store end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2865,657 +2890,616 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 local.get $1 - i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) - 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 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + 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 $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq 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 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - if + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 local.get $0 - call $~lib/set/Set#add + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 + i32.store offset=4 local.get $0 + i32.load offset=4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.shl + i32.const 1 + i32.or end + call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 - local.get $1 - 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 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=8 - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $5 - global.get $~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 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 4 + i32.shl + i32.add + local.tee $4 + local.get $1 + f64.store global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $6 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.store offset=4 - local.get $6 - i32.const 0 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $0 + i32.load + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 + local.get $0 + i32.store + local.get $4 + local.get $5 + 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 $4 + i32.store + end + 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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + call $~lib/set/Set#find + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=8 + local.get $0 + i32.store + local.get $0 + i32.load offset=16 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 1073741820 - i32.gt_u + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 + local.get $0 + i32.store + local.get $0 + i32.load offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 + local.get $0 i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 + local.get $0 i32.store offset=4 + 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 $3 + local.get $1 + f32.store global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 local.get $0 - i32.store offset=8 + i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load8_s - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|00 - end - end + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.store - local.get $6 local.get $0 - call $~lib/array/Array#set:length + i32.load + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - local.get $0 - 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 $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + global.set $~lib/rt/itcms/toSpace local.get $1 + global.set $~lib/rt/itcms/white local.get $0 - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace 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 $0 - loop $for-loop|4 local.get $0 - i32.const 50 - i32.lt_s + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34516 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 i32.store offset=4 - local.get $1 local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - call $~lib/set/Set#has + i32.const 4 + i32.add + local.tee $0 + i32.const 34516 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 20 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3530,78 +3514,66 @@ unreachable end 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 24 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 + i32.load global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $0 - local.get $1 - i32.store offset=8 + i32.store + local.get $2 local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + 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 $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.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 - local.get $0 - i32.store offset=4 - local.get $0 i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3624,55 +3596,60 @@ local.get $0 i32.store local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 + i32.load + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 + i32.store + local.get $2 local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + 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/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (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 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3687,177 +3664,142 @@ unreachable end 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 - i32.load offset=8 - local.set $4 + i32.load global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $4 + i32.store + local.get $2 local.get $0 - i32.load offset=16 - i32.const 3 + i32.load offset=4 + i32.and + i32.const 2 i32.shl i32.add - local.set $7 - local.get $3 - local.set $2 + i32.load + local.set $0 loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne + local.get $0 if - local.get $4 + local.get $0 i32.load offset=4 + local.tee $2 i32.const 1 i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load8_u - local.tee $8 - i32.store8 - local.get $2 - local.get $5 + if (result i32) + i32.const 0 + else local.get $1 - local.get $8 - 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 + local.get $0 i32.load - i32.store offset=4 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 8 + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $4 - i32.const 8 - i32.add - local.set $4 + local.get $2 + i32.const -2 + i32.and + local.set $0 br $while-continue|0 end end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.store local.get $0 - i32.store offset=8 + i32.load global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 + i32.store + local.get $2 local.get $0 - i32.load offset=20 - i32.store offset=16 + 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 $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.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 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3872,167 +3814,143 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - local.get $1 - local.get $1 - i32.const 255 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 + i32.const 2 + i32.shl i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.load + local.set $0 + loop $while-continue|0 local.get $0 - i32.load offset=12 - i32.eq if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + i32.const 0 else - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=4 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + return end - call $~lib/set/Set#rehash + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#clear (param $0 i32) + (local $1 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 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.store8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - 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.store + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#find (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 @@ -4054,35 +3972,61 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $2 local.get $0 i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - i32.load8_u + 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 + i32.load + i32.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/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (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 global.get $~lib/memory/__stack_pointer @@ -4097,705 +4041,736 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $2 local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 1 + i32.and + i32.const 2 + i32.shl 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) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.load + local.set $0 + loop $while-continue|0 local.get $0 - local.get $1 - call $~lib/set/Set#rehash + 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 + f64.load + f64.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 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (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 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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.const 100 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + 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 - 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|0 + f32.load + f32.eq end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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.const 4 i32.add - local.set $0 - br $for-loop|1 + 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.tee $4 + i32.const 7 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - 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.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 local.get $5 - i32.const 8 - i32.le_u - select - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + end + local.get $5 + if local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load8_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + local.get $3 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add + i32.load + i32.const -2 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 + i32.rotl + i32.and + i32.store end end - global.get $~lib/memory/__stack_pointer + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 - i32.store offset=4 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/set/Set#get:size - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + call $~lib/rt/tlsf/removeBlock local.get $1 - call $~lib/set/Set#get:size + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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.ne + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 + i32.const 1120 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|3 + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$904 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if local.get $0 - i32.const 50 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34516 i32.lt_u + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$904 end - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne + i32.const 1648 + i32.load + i32.gt_u if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 $1 + i32.const 2 + i32.shl + i32.const 1652 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - 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 1748 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + 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 - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear + 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 $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1748 + i32.lt_s + br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -4807,11 +4782,9 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4826,154 +4799,25 @@ unreachable end 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 24 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - 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 - local.get $0 - i32.store offset=4 - local.get $0 i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.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 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 - i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4992,49 +4836,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (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) @@ -5116,16 +4934,16 @@ if local.get $2 local.get $4 - i32.load16_s + i32.load8_u local.tee $8 - i32.store16 + i32.store8 local.get $2 local.get $5 local.get $1 local.get $8 i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -5196,216 +5014,37 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - 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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - 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.store - end + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $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 global.get $~lib/memory/__stack_pointer @@ -5420,61 +5059,131 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 - i32.load offset=12 - i32.ge_u + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 130 - 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 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 i32.const 1 - i32.shl i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 local.get $2 - i32.store16 - global.get $~lib/memory/__stack_pointer i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5489,77 +5198,88 @@ unreachable end 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 24 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 + local.get $1 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 - ) - (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 $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - i32.store local.get $1 + i32.store offset=8 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/set/Set#delete (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) + (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.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5577,713 +5297,1160 @@ 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 $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 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 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $8 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $5 + 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 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + 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 $4 + i32.const 16 + i32.add + local.set $4 + br $while-continue|0 + end end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 + local.get $7 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - i32.const 4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer 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) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/set/Set#rehash - end + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (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.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 - local.get $1 - 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 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=16 - local.set $5 - global.get $~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 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 8 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $6 + local.get $0 i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 + local.get $0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + 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 - i32.store offset=12 - local.get $5 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + end + if global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 i32.const 1 - i32.shl - local.tee $0 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + call $~lib/builtins/abort + unreachable + end + 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 24 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $2 - local.get $5 - i32.lt_s + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if + local.get $2 local.get $4 + i32.load + local.tee $8 + i32.store local.get $2 - i32.const 3 - i32.shl + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 + 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.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load16_s - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 local.get $2 - i32.const 1 + i32.store + local.get $2 + i32.const 8 i32.add local.set $2 - br $for-loop|00 end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/array/Array#set:length + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + 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) global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end + local.get $0 + i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 - call $~lib/set/Set#get:size - local.set $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 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 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 $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.get $2 + local.get $4 + i32.load16_u + local.tee $8 + i32.store16 + local.get $2 + local.get $5 local.get $1 - local.get $0 - 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 $0 - i32.const 1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 i32.add - local.set $0 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 $0 - i32.const 1 + 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.set $0 - br $for-loop|4 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + local.get $1 + local.get $1 + i32.load offset=4 i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + 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) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) @@ -6355,89 +6522,27 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#has (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - local.get $1 - 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 $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 + i32.store offset=4 local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find i32.const 0 - i32.ne + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (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) @@ -6519,16 +6624,16 @@ if local.get $2 local.get $4 - i32.load16_u + i32.load8_s local.tee $8 - i32.store16 + i32.store8 local.get $2 local.get $5 local.get $1 local.get $8 i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -6607,255 +6712,26 @@ call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - 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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - 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.store - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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 + i32.store offset=8 local.get $0 - i32.store - local.get $1 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=12 local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u + local.get $0 + i32.load offset=20 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (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) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -6881,11 +6757,10 @@ local.get $0 local.get $1 local.get $1 - i32.const 65535 - i32.and + i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -6910,7 +6785,7 @@ i32.shr_u local.get $1 i32.xor - call $~lib/set/Set#find + call $~lib/set/Set#find local.tee $1 i32.eqz if @@ -6942,650 +6817,1330 @@ local.get $0 i32.store local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - 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) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) - 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 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 - local.get $1 - 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 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + 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) global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=8 - local.set $4 + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $5 - global.get $~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 1748 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - br_if $folding-inner1 - 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 16 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + else i32.const 0 - i32.store offset=8 + end + if global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 536870910 - i32.gt_u + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $8 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable + local.get $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $5 + 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 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + 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 $4 + i32.const 16 + i32.add + local.set $4 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) + (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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 i32.const 1 - i32.shl - local.tee $0 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 + i32.const 8 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 + local.get $0 i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 + local.get $0 + i32.store + 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 - local.set $0 - loop $for-loop|00 - local.get $2 - local.get $5 - i32.lt_s + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 24 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if + local.get $2 local.get $4 + i32.load + local.tee $8 + i32.store local.get $2 - i32.const 3 + local.get $5 + 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 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load16_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 local.get $2 - i32.const 1 + i32.store + local.get $2 + i32.const 8 i32.add local.set $2 - br $for-loop|00 end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/array/Array#set:length + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + 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 $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + 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) global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 - call $~lib/set/Set#get:size - local.set $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + 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 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end + end + if global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 24 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 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 $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $4 + i32.load16_s + local.tee $8 + i32.store16 + local.get $2 + local.get $5 local.get $1 + local.get $8 + 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 $1 - local.get $0 - 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 $0 - i32.const 1 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 i32.add - local.set $0 - br $for-loop|4 + local.set $2 end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + 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) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) + (func $~lib/set/Set#constructor (result i32) (local $0 i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -7611,7 +8166,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 12 + i32.const 8 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -7675,148 +8230,16 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/set/Set#find (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - i32.load - i32.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/set/Set#has (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - local.get $1 - 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 $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 - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f64) + (local $9 i64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -7855,7 +8278,7 @@ i32.const 3 i32.div_s local.tee $6 - i32.const 3 + i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $3 @@ -7872,7 +8295,7 @@ local.get $4 local.get $0 i32.load offset=16 - i32.const 3 + i32.const 4 i32.shl i32.add local.set $7 @@ -7884,64 +8307,78 @@ i32.ne if local.get $4 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 local.get $4 - i32.load + f64.load local.tee $8 - i32.store + f64.store local.get $2 local.get $5 local.get $1 local.get $8 + i64.reinterpret_f64 + local.tee $9 + 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 $8 - local.get $8 + local.get $9 + 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 i32.const 15 i32.shr_u + local.get $10 i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $10 i32.const 13 i32.shr_u + local.get $10 i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $10 i32.const 16 i32.shr_u + local.get $10 i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $8 + local.tee $10 i32.load - i32.store offset=4 - local.get $8 + i32.store offset=8 + local.get $10 local.get $2 i32.store local.get $2 - i32.const 8 + i32.const 16 i32.add local.set $2 end local.get $4 - i32.const 8 + i32.const 16 i32.add local.set $4 br $while-continue|0 @@ -7998,8 +8435,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) + (local $2 i64) (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer @@ -8026,229 +8463,135 @@ local.get $0 local.get $1 local.get $1 + i64.reinterpret_f64 + local.tee $2 + 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 $2 + 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 $3 i32.const 15 i32.shr_u - local.get $2 + local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $3 i32.const 13 i32.shr_u - local.get $2 + local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $3 i32.const 16 i32.shr_u - local.get $2 + local.get $3 i32.xor + call $~lib/set/Set#find local.tee $3 - call $~lib/set/Set#find i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 8 i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store + global.set $~lib/memory/__stack_pointer + return end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.const 4 local.get $0 - i32.load offset=12 + i32.load offset=20 + local.tee $4 + local.get $4 + 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 1616 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity + i32.store + 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 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $3 - i32.store offset=12 + call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8263,27 +8606,87 @@ unreachable end 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 24 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/array/ensureCapacity + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.store local.get $0 local.get $1 - i32.store offset=12 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result 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 $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8298,40 +8701,176 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 + 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.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $4 + i32.load + local.set $8 + local.get $2 + local.get $4 + f32.load + f32.store + local.get $2 + local.get $5 + 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 $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=8 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $6 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + 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 + 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 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8356,6 +8895,7 @@ local.get $0 local.get $1 local.get $1 + i32.reinterpret_f32 i32.const -1028477379 i32.mul i32.const 374761397 @@ -8364,27 +8904,27 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 i32.const 15 i32.shr_u - local.get $1 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 i32.const 13 i32.shr_u - local.get $1 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 i32.const 16 i32.shr_u - local.get $1 + local.get $2 i32.xor - call $~lib/set/Set#find - local.tee $1 + call $~lib/set/Set#find + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -8393,8 +8933,8 @@ global.set $~lib/memory/__stack_pointer return end - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 1 i32.or @@ -8418,18 +8958,18 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -8437,632 +8977,692 @@ if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) - 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 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - i32.const 1748 + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + else + i32.const 0 + end + if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.shr_u + local.set $1 + else local.get $1 - i32.store + 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.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 31 + local.get $1 + i32.clz i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - 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 $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 + i32.load offset=96 + else local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.load + i32.const -1 + local.get $2 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - local.get $0 - i32.ne - if + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34528 + i32.const 0 + i32.store + i32.const 36096 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - local.get $0 - call $~lib/set/Set#has + i32.const 16 + i32.lt_u if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34528 + i32.add i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + end + i32.const 34528 + i32.const 36100 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34528 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne + i32.gt_u if i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 + i32.const 1392 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 - end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 end - global.get $~lib/memory/__stack_pointer + else + local.get $0 + i32.const 1572 + i32.add local.get $1 - i32.store offset=4 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 local.get $1 - call $~lib/set/Set#get:size - i32.const 50 i32.ne if - i32.const 0 - i32.const 1568 - i32.const 45 + local.get $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 + i32.and i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 34544 - i32.const 34592 - i32.const 1 + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9077,78 +9677,140 @@ unreachable end 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 24 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=8 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store local.get $0 local.get $1 - call $~lib/rt/itcms/__link + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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 $1 - i32.store offset=8 local.get $0 + i32.store local.get $1 - i32.store offset=8 local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + 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 130 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + local.get $1 local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store offset=4 + i32.store + local.get $1 local.get $0 - i32.const 0 - i32.store offset=16 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + local.get $1 local.get $0 - i32.const 0 - i32.store offset=20 + i32.load offset=4 + i32.add + i32.load8_s global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9171,58 +9833,105 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 - i32.load + 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 130 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $2 local.get $0 i32.load offset=4 - i32.and - i32.const 2 + local.get $1 + i32.const 3 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 - i32.load - i32.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 + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 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 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -9244,54 +9953,56 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 local.get $1 - 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 $0 local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $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 130 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 + i32.store local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (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) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9306,177 +10017,77 @@ unreachable end 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store + local.get $1 local.get $0 - i32.load offset=8 - local.set $4 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $4 + i32.store local.get $0 - i32.load offset=16 - i32.const 3 + i32.load offset=4 + local.get $1 + i32.const 2 i32.shl i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load - local.tee $8 - i32.store - local.get $2 - local.get $5 - 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 $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|0 - end - end + i32.load global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 0 + i32.store local.get $0 local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.store local.get $0 + local.get $1 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 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9491,165 +10102,109 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $1 + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + local.tee $3 + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 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.store + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (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 f64) + (local $2 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -9689,19 +10244,19 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + f64.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9716,135 +10271,125 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - local.get $1 - 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 $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u local.get $1 - i32.xor - call $~lib/set/Set#find - local.tee $1 - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - i32.const 1 + i32.const 2 + i32.shl i32.add + f32.load + global.get $~lib/memory/__stack_pointer 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) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34516 + 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/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/set/Set#rehash + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 8 + 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 $std/set/testNumeric - (local $0 i32) + (func $~lib/set/Set#values (param $0 i32) (result 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) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -9853,148 +10398,257 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 + global.get $~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 1748 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - i32.const 20 - memory.fill + i32.store offset=4 global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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|0 - end - end + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $6 i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 134217727 + i32.gt_u if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has + local.get $3 + local.get $2 + i32.const 4 + i32.shl + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f64.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + 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 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store + 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.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 $6 + i32.store + local.get $6 local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 - local.get $1 - i32.store offset=4 + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (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 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1748 i32.lt_s @@ -10003,15 +10657,15 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=8 - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=16 local.set $5 global.get $~lib/memory/__stack_pointer @@ -10031,7 +10685,7 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 15 + i32.const 21 call $~lib/rt/itcms/__new local.tee $6 i32.store @@ -10123,14 +10777,12 @@ global.set $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 + loop $for-loop|0 local.get $2 local.get $5 i32.lt_s if - local.get $4 + local.get $3 local.get $2 i32.const 3 i32.shl @@ -10144,114 +10796,131 @@ global.get $~lib/memory/__stack_pointer local.get $6 i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $6 + i32.store local.get $0 - local.get $7 - i32.load - call $~lib/array/Array#__set + local.get $6 + 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 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 local.get $0 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $0 + local.get $4 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|00 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer local.get $6 i32.store local.get $6 - local.get $0 + local.get $1 call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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) + 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 - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - local.set $0 + i32.const 1748 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - local.get $0 - 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 $0 - loop $for-loop|3 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 local.get $0 - i32.const 50 + i32.const 100 i32.lt_u if global.get $~lib/memory/__stack_pointer @@ -10259,12 +10928,11 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#has - i32.eqz + call $~lib/set/Set#has if i32.const 0 i32.const 1568 - i32.const 31 + i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable @@ -10274,17 +10942,18 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#delete + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#has + call $~lib/set/Set#has + i32.eqz if i32.const 0 i32.const 1568 - i32.const 33 + i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable @@ -10293,7 +10962,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer @@ -10301,21 +10970,21 @@ i32.store offset=4 local.get $1 call $~lib/set/Set#get:size - i32.const 50 + i32.const 100 i32.ne if i32.const 0 i32.const 1568 - i32.const 35 + i32.const 10 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 50 local.set $0 - loop $for-loop|4 + loop $for-loop|1 local.get $0 - i32.const 50 + i32.const 100 i32.lt_u if global.get $~lib/memory/__stack_pointer @@ -10323,32 +10992,12 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 1568 - i32.const 41 + i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable @@ -10358,1086 +11007,482 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#delete + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#has + call $~lib/set/Set#has + i32.eqz if i32.const 0 i32.const 1568 - i32.const 43 + 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|4 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 20 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 24 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable + end local.get $0 - return + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 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/set/Set#has (param $0 i32) (param $1 i64) (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - local.get $1 - 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 $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 i32.ne if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i64.load - local.tee $6 - i64.store - local.get $2 - local.get $5 - 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 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - 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 $4 - i32.const 16 - i32.add - local.set $4 - br $while-continue|0 + 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 + local.get $1 + 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 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~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 1748 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - 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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - call $~lib/set/Set#find - i32.eqz - if + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load8_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 i32.store + local.get $6 local.get $0 - i32.load offset=16 + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 i32.store offset=4 - local.get $0 - local.get $3 - 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 $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=4 - else + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + 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 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 i32.const 1 - i32.or + i32.add + local.set $2 + br $for-loop|2 end - call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store offset=4 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 $3 - local.get $1 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + call $~lib/set/Set#get:size + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $2 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + 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 $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - i32.lt_s + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - i32.const 1248 - i32.const 1616 - i32.const 130 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~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 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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 - i32.const 3 - i32.const 0 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) - (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 20 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + i32.const 34544 + i32.const 34592 i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) (local $1 i32) (local $2 i64) @@ -11462,20 +11507,20 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $1 i32.store loop $for-loop|0 local.get $2 i64.const 100 - i64.lt_s + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -11489,13 +11534,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11532,14 +11577,14 @@ loop $for-loop|1 local.get $2 i64.const 100 - i64.lt_s + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11554,13 +11599,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11636,7 +11681,7 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 17 + i32.const 19 call $~lib/rt/itcms/__new local.tee $8 i32.store @@ -11777,7 +11822,7 @@ local.get $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $0 i32.store offset=12 i32.const 0 @@ -11800,8 +11845,8 @@ local.get $1 local.get $8 local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11820,8 +11865,8 @@ local.get $0 local.get $8 local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add + call $~lib/array/Array#__get + call $~lib/set/Set#add local.get $3 i32.const 1 i32.add @@ -11855,14 +11900,14 @@ loop $for-loop|3 local.get $2 i64.const 50 - i64.lt_s + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11877,13 +11922,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#delete + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -11919,14 +11964,14 @@ loop $for-loop|4 local.get $2 i64.const 50 - i64.lt_s + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -11940,13 +11985,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11961,13 +12006,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#delete + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -12029,844 +12074,607 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/set/Set#constructor (result i32) + (func $std/set/testNumeric (local $0 i32) (local $1 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 24 - i32.const 18 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 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 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $0 - i64.load - i64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 - global.set $~lib/memory/__stack_pointer - local.get $0 - return + local.set $0 + br $for-loop|1 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/set/Set#has (param $0 i32) (param $1 i64) (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - local.get $1 - 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 $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 i32.ne if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i64.load - local.tee $6 - i64.store - local.get $2 - local.get $5 - 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 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - 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 $4 - i32.const 16 - i32.add - local.set $4 - br $while-continue|0 + 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 + local.get $1 + 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 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~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 1748 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - 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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - call $~lib/set/Set#find - i32.eqz - if + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store + local.get $6 local.get $0 - i32.load offset=16 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.eq + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 local.get $0 - i32.load offset=12 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 local.get $0 - i32.load offset=4 - else + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 - i32.load offset=4 - i32.const 1 - i32.shl i32.const 1 - i32.or + i32.add + local.set $0 + br $for-loop|4 end - call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 $3 local.get $1 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $2 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) - (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/set/Set#rehash + i32.const 20 + 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 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) (local $1 i32) - (local $2 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) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -12881,20 +12689,20 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $1 i32.store loop $for-loop|0 - local.get $2 - i64.const 100 - i64.lt_u + local.get $0 + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -12907,14 +12715,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#add + local.get $0 + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -12924,10 +12732,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|0 end end @@ -12946,19 +12754,19 @@ call $~lib/builtins/abort unreachable end - i64.const 50 - local.set $2 + i32.const 50 + local.set $0 loop $for-loop|1 - local.get $2 - i64.const 100 - i64.lt_u + local.get $0 + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -12972,14 +12780,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#add + local.get $0 + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -12989,10 +12797,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|1 end end @@ -13031,13 +12839,13 @@ i32.store local.get $1 i32.load offset=8 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=16 - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16 @@ -13055,39 +12863,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 19 + i32.const 11 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 i32.const 0 i32.store - local.get $8 + local.get $6 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 i32.const 0 i32.store offset=12 - local.get $6 - i32.const 134217727 + local.get $5 + i32.const 536870910 i32.gt_u if i32.const 1456 @@ -13099,128 +12907,130 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $6 - local.get $6 + local.get $5 + local.get $5 i32.const 8 i32.le_u select - i32.const 3 + i32.const 1 i32.shl - local.tee $9 + local.tee $0 i32.const 1 call $~lib/rt/itcms/__new local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $7 i32.store offset=12 - local.get $8 + local.get $6 local.get $7 i32.store - local.get $8 + local.get $6 local.get $7 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 - local.get $9 + local.get $6 + local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 local.get $6 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 + i32.const 0 + local.set $0 loop $for-loop|00 - local.get $3 - local.get $6 + local.get $2 + local.get $5 i32.lt_s if - local.get $5 - local.get $3 - i32.const 4 + local.get $4 + local.get $2 + i32.const 3 i32.shl i32.add local.tee $7 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store - local.get $8 + local.get $6 local.get $0 local.get $7 - i64.load - call $~lib/array/Array#__set + i32.load16_u + call $~lib/array/Array#__set local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|00 end end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store - local.get $8 + local.get $6 local.get $0 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $0 i32.store offset=12 i32.const 0 - local.set $3 + local.set $2 loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 call $~lib/array/Array#get:length - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=16 local.get $1 - local.get $8 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -13234,17 +13044,17 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=16 local.get $0 - local.get $8 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|2 end end @@ -13269,19 +13079,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 + i32.const 0 + local.set $0 loop $for-loop|3 - local.get $2 - i64.const 50 - i64.lt_u + local.get $0 + i32.const 50 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -13295,14 +13105,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#delete + local.get $0 + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -13311,10 +13121,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|3 end end @@ -13333,19 +13143,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 + i32.const 0 + local.set $0 loop $for-loop|4 - local.get $2 - i64.const 50 - i64.lt_u + local.get $0 + i32.const 50 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -13358,14 +13168,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#add + local.get $0 + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -13379,2171 +13189,2010 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#delete + local.get $0 + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + 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 $2 - i64.const 1 - i64.add - local.set $2 - br $for-loop|4 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - 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 20 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 24 - i32.const 20 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - f32.load - f32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + local.set $0 + br $for-loop|4 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - local.get $1 - 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 - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (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) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 i32.ne if - local.get $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s if - local.get $2 - local.get $4 - f32.load - local.tee $8 - f32.store - local.get $2 - local.get $5 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $8 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 - 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 + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 + local.get $1 + 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 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~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 1748 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 i32.shl i32.add - local.tee $9 - i32.load + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load8_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $9 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 local.get $2 - i32.store + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 local.get $2 - i32.const 8 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 i32.add local.set $2 + br $for-loop|2 end - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - 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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - call $~lib/set/Set#find - i32.eqz - if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=16 + call $~lib/set/Set#get:size + local.set $0 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - local.get $0 - i32.load offset=12 + i32.const 0 + i32.const 1568 + i32.const 27 i32.const 3 - i32.mul - i32.const 4 - i32.div_s + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 i32.lt_s - if (result i32) + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + 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 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 + local.get $0 + 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 $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 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 $3 local.get $1 - f32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $2 - 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 $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (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 - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - local.set $5 - global.get $~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 1748 - i32.lt_s - br_if $folding-inner1 - 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 16 - i32.const 21 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 i32.store offset=4 - local.get $6 + local.get $1 + call $~lib/set/Set#get:size + 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 - i32.store offset=8 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 268435455 - i32.gt_u + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 + local.get $1 + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 + local.get $1 + call $~lib/set/Set#get:size + 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 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store loop $for-loop|0 local.get $2 - local.get $5 - i32.lt_s + i64.const 100 + i64.lt_s if - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 - i32.and + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $7 - f32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $0 - local.get $6 - 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 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $0 - i32.const 1 - i32.add - local.tee $7 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $7 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 $2 + loop $for-loop|1 + local.get $2 + i64.const 100 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - i32.const 1 - i32.add + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 $2 + i64.const 1 + i64.add local.set $2 - br $for-loop|0 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 local.get $1 - call $~lib/array/Array#set:length + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) - (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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 - i32.add + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub global.set $~lib/memory/__stack_pointer - return - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $8 i32.store - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else + local.get $8 i32.const 0 - end - if + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store - loop $for-loop|0 - local.get $1 - f32.const 100 - f32.lt + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 134217727 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $9 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $8 + local.get $7 + i32.store + local.get $8 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $9 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + loop $for-loop|00 + local.get $3 + local.get $6 + 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 4 + i32.shl + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $7 + i64.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|00 end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - f32.const 100 - f32.lt - if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $8 i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz + local.get $8 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $1 + local.get $8 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $0 + local.get $8 + 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + 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 $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_s if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 $2 + i64.const 1 + i64.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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - 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.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/set/Set#values - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=12 - loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=4 - local.get $3 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|4 local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + i64.const 50 + i64.lt_s if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + 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 $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $4 - local.get $3 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 end - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $~lib/set/Set#get:size - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - local.get $2 - 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 + global.get $~lib/memory/__stack_pointer local.get $1 - f32.const 50 - f32.lt + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - 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 + global.get $~lib/memory/__stack_pointer local.get $1 - f32.const 50 - f32.lt + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - 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 20 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/set/Set#constructor (result i32) + (func $std/set/testNumeric (local $0 i32) (local $1 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 24 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 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 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $0 - f64.load - f64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + 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 - global.set $~lib/memory/__stack_pointer - local.get $0 - return + local.set $0 + br $for-loop|1 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/set/Set#has (param $0 i32) (param $1 f64) (result i32) - (local $2 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.store - local.get $0 - local.get $1 - local.get $1 - 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 $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 f64) - (local $9 i64) - (local $10 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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 i32.ne if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - f64.load - local.tee $8 - f64.store - local.get $2 - local.get $5 - local.get $1 - local.get $8 - i64.reinterpret_f64 - local.tee $9 - 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 $9 - 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 - i32.const 15 - i32.shr_u - local.get $10 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $10 - i32.const 13 - i32.shr_u - local.get $10 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $10 - i32.const 16 - i32.shr_u - local.get $10 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $10 - i32.load - i32.store offset=8 - local.get $10 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $4 - i32.const 16 - i32.add - local.set $4 - br $while-continue|0 + 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 + local.get $1 + 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 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~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 1748 + i32.lt_s + br_if $folding-inner1 + 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 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f64) - (local $2 i64) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - 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 $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store + local.get $6 local.get $0 - i32.load offset=16 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.eq + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $4 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 local.get $0 - i32.load offset=12 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 i32.const 3 - i32.mul - i32.const 4 - i32.div_s + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 i32.lt_s - if (result i32) + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 local.get $0 - i32.load offset=4 - else + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 - i32.load offset=4 - i32.const 1 - i32.shl i32.const 1 - i32.or + i32.add + local.set $0 + br $for-loop|4 end - call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 4 - i32.shl - i32.add - local.tee $4 local.get $1 - f64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + 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 $1 + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $5 + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 - local.get $0 - i32.store - local.get $4 - local.get $5 - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 20 i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $4 - i32.store + 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 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $std/set/testNumeric + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 i32) (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 block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 + local.get $1 + 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 1748 i32.lt_s @@ -15552,15 +15201,15 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=8 - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=16 local.set $5 global.get $~lib/memory/__stack_pointer @@ -15580,7 +15229,7 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 23 + i32.const 9 call $~lib/rt/itcms/__new local.tee $6 i32.store @@ -15612,7 +15261,7 @@ i32.const 0 i32.store offset=12 local.get $5 - i32.const 134217727 + i32.const 536870910 i32.gt_u if i32.const 1456 @@ -15629,7 +15278,7 @@ i32.const 8 i32.le_u select - i32.const 3 + i32.const 1 i32.shl local.tee $0 i32.const 1 @@ -15672,112 +15321,300 @@ global.set $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 - loop $for-loop|0 + i32.const 0 + local.set $0 + loop $for-loop|00 local.get $2 local.get $5 i32.lt_s if - local.get $3 + local.get $4 local.get $2 - i32.const 4 + i32.const 3 i32.shl i32.add local.tee $7 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.and i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $7 - f64.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load16_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + 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 $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $0 - local.get $6 - 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 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $0 - i32.const 1 - i32.add - local.tee $7 - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $7 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 43 + 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|4 end end global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 local.get $1 - call $~lib/array/Array#set:length + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + 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 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 return end i32.const 34544 @@ -15787,10 +15624,14 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) + (func $std/set/testNumeric + (local $0 i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15805,193 +15646,394 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + 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 $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + f64.const 1 + f64.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.ge_u + call $~lib/set/Set#get:size + i32.const 100 + i32.ne if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 + 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.get $0 - i32.store + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load + call $~lib/set/Set#values + local.tee $3 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) - (local $2 i64) - (local $3 i32) - (local $4 i32) + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=12 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $0 + local.get $3 + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $4 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/set/Set#get:size + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.get $2 + i32.ne if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + f64.const 1 + f64.add + local.set $1 + br $for-loop|3 + end + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - local.get $1 - local.get $1 - 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 $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - call $~lib/set/Set#find - local.tee $3 - i32.eqz + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + 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 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + end end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $3 + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $3 - i32.const 1 - i32.add - i32.const 4 + i32.store offset=4 local.get $0 - i32.load offset=20 - local.tee $4 - local.get $4 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 + call $~lib/set/Set#get:size if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - call $~lib/set/Set#rehash + 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 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) - (local $1 f64) + (local $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16015,20 +16057,20 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $0 i32.store loop $for-loop|0 local.get $1 - f64.const 100 - f64.lt + f32.const 100 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -16042,13 +16084,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16059,8 +16101,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|0 end @@ -16080,19 +16122,19 @@ call $~lib/builtins/abort unreachable end - f64.const 50 + f32.const 50 local.set $1 loop $for-loop|1 local.get $1 - f64.const 100 - f64.lt + f32.const 100 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16107,13 +16149,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16124,8 +16166,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|1 end @@ -16150,11 +16192,11 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#values + call $~lib/set/Set#values local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $4 i32.store offset=12 loop $for-loop|2 @@ -16175,8 +16217,8 @@ local.get $0 local.get $3 local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16195,8 +16237,8 @@ local.get $4 local.get $3 local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add + call $~lib/array/Array#__get + call $~lib/set/Set#add local.get $2 i32.const 1 i32.add @@ -16225,19 +16267,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|3 local.get $1 - f64.const 50 - f64.lt + f32.const 50 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16252,13 +16294,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -16268,8 +16310,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|3 end @@ -16289,19 +16331,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|4 local.get $1 - f64.const 50 - f64.lt + f32.const 50 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -16315,13 +16357,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16336,13 +16378,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -16352,8 +16394,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|4 end @@ -16377,7 +16419,7 @@ local.get $0 i32.store offset=4 local.get $0 - call $~lib/set/Set#clear + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 @@ -16396,46 +16438,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/arraybuffer/ArrayBuffer#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 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - 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.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1504 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - 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 - ) ) diff --git a/tests/compiler/std/static-array.release.wat b/tests/compiler/std/static-array.release.wat index 7fae93149c..14b3ca07e7 100644 --- a/tests/compiler/std/static-array.release.wat +++ b/tests/compiler/std/static-array.release.wat @@ -4,12 +4,12 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) - (type $8 (func (param i32) (result i64))) - (type $9 (func (param i32) (result f32))) - (type $10 (func (param i32) (result f64))) + (type $5 (func (param i32) (result i64))) + (type $6 (func (param i32) (result f64))) + (type $7 (func (param i32) (result f32))) + (type $8 (func (param i32 i32) (result i32))) + (type $9 (func (param i32 i32 i64))) + (type $10 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -59,193 +59,6 @@ (data $19 (i32.const 1952) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\n\00\00\02\19\00\00\02\1a") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1184 - call $~lib/rt/itcms/__visit - i32.const 1264 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1584 - call $~lib/rt/itcms/__visit - i32.const 1632 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (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 - if - i32.const 0 - i32.const 1696 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$155 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34756 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$155 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1952 - i32.load - i32.gt_u - if - i32.const 1472 - i32.const 1824 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1956 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 i32.eqz @@ -270,900 +83,842 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (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 1988 + i32.lt_s if - i32.const 0 - i32.const 1904 - i32.const 268 - i32.const 14 + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $1 + i32.shr_u + i32.eqz if - i32.const 0 - i32.const 1904 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 + i32.shr_u i32.eqz if - local.get $0 + i32.const 1584 + i32.const 1536 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$145 + i32.const 1073741820 local.get $2 - i32.const 2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 i32.shl - i32.add local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$145 + end + local.get $4 + i32.load offset=12 + local.set $6 local.get $3 - i32.store offset=4 - local.get $3 + i32.const 1073741804 + i32.ge_u + if + i32.const 1632 + i32.const 1696 + i32.const 261 + 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$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $7 + local.get $3 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1632 + i32.const 1904 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - i32.store + i32.const 4 + i32.sub end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1904 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1904 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1904 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1904 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1904 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34768 - i32.const 0 - i32.store - i32.const 36336 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34768 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + local.tee $8 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $8 + i32.const 256 + i32.ge_u + if (result i32) + local.get $8 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $8 + i32.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $8 + end + else + local.get $8 + end + i32.const 4 + local.get $7 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + 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 $1 + local.get $5 + local.get $1 + local.get $5 + i32.gt_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 $7 local.get $1 i32.const 16 - i32.lt_u + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $7 + local.get $8 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34768 - i32.add i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const 1904 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - local.get $0 - i32.const 1 + local.get $8 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $9 + local.get $8 + i32.const 4 i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34768 - i32.const 36340 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34768 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 15 + i32.and + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1904 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 + local.get $9 i32.const -4 i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end + local.get $8 + i32.sub + local.tee $5 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $8 + local.get $9 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $8 + i32.add + local.tee $8 + local.get $5 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $7 + local.get $8 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $9 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $5 + i32.load + i32.const -3 + i32.and + i32.store end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + local.get $1 + local.get $6 + i32.store offset=12 + local.get $1 + local.get $3 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $5 + i32.load offset=8 + local.set $6 + local.get $1 + local.get $5 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + local.get $6 + local.get $1 + local.get $6 i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $5 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load i32.const -4 i32.and - i32.eq + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $3 + memory.fill + local.get $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $1 if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34756 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.set $0 - loop $while-continue|2 + i32.eq + if local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + 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 if local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $2 i32.const 3 + i32.eq i32.and - i32.ne if - local.get $0 - local.get $2 - i32.const -4 - i32.and local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + call $~lib/rt/itcms/Object#makeGray end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 end end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (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 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + 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.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1904 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 - i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add local.tee $1 - i32.const -4 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz + local.set $3 local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34756 - i32.lt_u + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz 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.const -2 + local.get $2 + i32.rotl i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34756 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1904 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + i32.store end - i32.const 10 - return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1904 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + local.get $4 local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1904 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 i32.const 256 i32.lt_u - if - local.get $1 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - 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.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $2 i32.const 16 i32.lt_u - local.get $2 + local.get $5 i32.const 23 i32.lt_u i32.and @@ -1171,78 +926,198 @@ if i32.const 0 i32.const 1904 - i32.const 334 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add i32.const 2 i32.shl i32.add - i32.load offset=4 - i32.const -1 + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 + if + i32.const 0 + i32.const 1696 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$155 local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl + i32.load offset=4 + i32.const -4 i32.and local.tee $1 - if (result i32) + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34756 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 1904 - i32.const 347 + i32.const 1696 + i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else + br $__inlined_func$~lib/rt/itcms/Object#unlink$155 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if i32.const 0 + i32.const 1696 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1952 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1824 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 2 + i32.shl + i32.const 1956 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) block $folding-inner0 @@ -1299,10 +1174,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:std/static-array - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (result i64) + (local $1 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1322,10 +1195,30 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store local.get $0 + i32.const 1196 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1184 i32.store + i32.const 1188 + i32.load local.get $0 - i32.load offset=12 + i32.const 3 + i32.shl + i32.add + i64.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1380,15 +1273,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + (func $~lib/array/Array#__get (param $0 i32) (result f64) + (local $1 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1408,610 +1294,724 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store local.get $0 + i32.const 1372 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1360 i32.store + i32.const 1364 + i32.load local.get $0 - i32.load offset=8 - local.tee $2 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (result f32) + (local $1 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + 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 + i32.const 1264 + i32.store + local.get $0 + i32.const 1276 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1268 + i32.load + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.shr_u - i32.eqz + i32.const 256 + i32.lt_u if - i32.const 1073741820 local.get $1 + i32.const 4 i32.shr_u - i32.eqz + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 1584 - i32.const 1536 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable + 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$145 - i32.const 1073741820 - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.const 8 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.shl + i32.ctz local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $3 - local.get $0 - i32.load + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.tee $2 - i32.const 20 - i32.sub - local.tee $4 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $4 - local.get $3 - i32.store offset=16 - local.get $2 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$145 - end - local.get $4 - i32.load offset=12 - local.set $6 - local.get $3 - i32.const 1073741804 - i32.ge_u - if - i32.const 1632 - i32.const 1696 - i32.const 261 - 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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $7 - local.get $3 - i32.const 16 - i32.add - local.tee $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 1632 + i32.const 0 i32.const 1904 - i32.const 461 - i32.const 29 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 + local.get $2 + i32.ctz local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $8 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - local.get $8 - i32.const 256 - i32.ge_u - if (result i32) - local.get $8 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $8 - i32.const 1 - i32.const 27 - local.get $8 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $8 - end - else - local.get $8 - end - i32.const 4 - local.get $7 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - 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 $1 - local.get $5 - local.get $1 - local.get $5 - i32.gt_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 $7 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34768 + i32.const 0 + i32.store + i32.const 36336 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34768 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $7 - local.get $8 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.lt_u if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34768 + i32.add i32.const 0 - i32.const 1904 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end end - local.get $8 - local.get $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34768 + i32.const 36340 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34768 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1904 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 i32.load - i32.const -4 + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 1264 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1584 + call $~lib/rt/itcms/__visit + i32.const 1632 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 i32.and - i32.gt_u + i32.const 3 + i32.ne if i32.const 0 - i32.const 1904 - i32.const 501 - i32.const 14 + i32.const 1696 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $7 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $9 - local.get $8 - i32.const 4 + local.get $0 + i32.const 20 i32.add - i32.const 15 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~start + call $start:std/static-array + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - if - i32.const 0 - i32.const 1904 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $9 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 i32.const -4 i32.and - local.get $8 - i32.sub - local.tee $5 - i32.const 16 - i32.ge_u + i32.eq if - local.get $1 - local.get $8 - local.get $9 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $8 - i32.add - local.tee $8 - local.get $5 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $7 - local.get $8 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $9 - i32.const -2 + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34756 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.store - local.get $1 - i32.const 4 - i32.add + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace local.get $1 - i32.load + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 i32.const -4 i32.and - i32.add - local.tee $5 - local.get $5 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - local.get $6 - i32.store offset=12 - local.get $1 - local.get $3 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $5 - i32.load offset=8 - local.set $6 - local.get $1 - local.get $5 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $6 - i32.store offset=8 - local.get $6 - local.get $1 - local.get $6 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $5 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $3 - memory.fill - local.get $1 - local.get $2 - local.get $3 - local.get $4 - i32.load offset=16 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_u - select - memory.copy + global.get $~lib/rt/itcms/visitCount + return end - local.get $1 - local.get $2 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace i32.ne if local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34756 + i32.lt_u if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 295 - 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.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.eq + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34756 + 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 20 + i32.const 4 i32.sub - i32.load offset=4 - i32.const 3 + local.set $2 + local.get $0 + i32.const 15 i32.and - local.tee $2 - 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 + local.get $0 + select + if (result i32) i32.const 1 - i32.eq + else local.get $2 - i32.const 3 - i32.eq + i32.load + i32.const 1 i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end end + if + i32.const 0 + i32.const 1904 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end + i32.const 10 + return end - local.get $0 - local.get $3 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (result i64) - (local $1 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 1988 - i32.lt_s - if - i32.const 34784 - i32.const 34832 - 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 - i32.const 1184 - i32.store - local.get $0 - i32.const 1196 - i32.load - i32.ge_u - if - i32.const 1472 - i32.const 1536 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store - i32.const 1188 - i32.load - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (result f32) - (local $1 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1988 - i32.lt_s - if - i32.const 34784 - i32.const 34832 - 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 - i32.const 1264 - i32.store - local.get $0 - i32.const 1276 - i32.load - i32.ge_u - if - i32.const 1472 - i32.const 1536 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1264 - i32.store - i32.const 1268 - i32.load - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (result f64) - (local $1 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1988 - i32.lt_s - if - i32.const 34784 - i32.const 34832 - 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 - i32.const 1360 - i32.store - local.get $0 - i32.const 1372 - i32.load - i32.ge_u - if - i32.const 1472 - i32.const 1536 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1360 - i32.store - i32.const 1364 - i32.load - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $start:std/static-array global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat index 21498b4f38..f83e7fdb29 100644 --- a/tests/compiler/std/staticarray.release.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -5,12 +5,12 @@ (type $3 (func)) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32) (result i32))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32) (result i32))) (type $8 (func (param i32 i32 i32 i32))) (type $9 (func (result i32))) - (type $10 (func (param i32 i32 i64))) - (type $11 (func (param i32 i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i32 i32 i32))) + (type $11 (func (param i32 i32 i64))) (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)) @@ -172,206 +172,169 @@ (elem $0 (i32.const 1) $start:std/staticarray~anonymous|0 $start:std/staticarray~anonymous|1 $start:std/staticarray~anonymous|2 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|7 $start:std/staticarray~anonymous|8 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $~lib/util/sort/COMPARATOR~anonymous|0) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - global.get $std/staticarray/arr3 - local.tee $0 + (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 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 1344 + i32.const 1408 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - global.get $std/staticarray/arr4 - local.tee $0 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1680 - call $~lib/rt/itcms/__visit - i32.const 2336 - call $~lib/rt/itcms/__visit - i32.const 1344 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 i32.const 0 - i32.const 1408 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 20 + 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 - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/threshold end end - ) - (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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1408 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$267 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 36728 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1408 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$267 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1408 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 + call $~lib/rt/tlsf/initialize end - global.get $~lib/rt/itcms/toSpace - local.set $2 + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.load offset=12 + i32.const 16 + i32.add + 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 $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 3888 - i32.load - i32.gt_u - if - i32.const 1088 - i32.const 1536 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 3892 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.load offset=8 local.set $3 local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 + local.get $1 global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 i32.or i32.store offset=4 - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 + local.get $3 + local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $2 - local.get $0 i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) + 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 + i32.const 0 local.get $0 - i32.eqz + memory.fill + local.get $1 + ) + (func $~lib/staticarray/StaticArray#__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 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + 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.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if return end @@ -393,668 +356,1068 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 268 - i32.const 14 + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - i32.const 0 - i32.const 1616 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + i32.ge_u + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end + i32.const 7 + i32.and + i32.or + else + i32.const 1 end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$106 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$106 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 201 - i32.const 14 - 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 0 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + i32.eqz + if + return + end + local.get $0 i32.eqz if i32.const 0 - i32.const 1616 - i32.const 203 + i32.const 1408 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/itcms/white local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 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 $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 + i32.const 20 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + 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 - i32.const 0 - i32.const 1616 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 + ) + (func $~lib/rt/__newArray (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.add - local.get $2 - i32.add - i32.ne + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 234 - i32.const 14 + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + if + local.get $3 local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + local.get $4 + memory.copy end - local.tee $2 + local.get $3 + i32.store i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 i32.const 0 - i32.store offset=4 + 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 $3 + 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/array/Array#get:length (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 3960 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 36752 + i32.const 36800 + 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 - local.get $5 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (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 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 i32.const 2 - i32.shl - i32.add + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=96 + i32.store local.get $0 + local.get $2 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (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 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store + local.get $1 local.get $0 - local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add + i32.load local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 382 - i32.const 14 + i32.const 2336 + i32.const 1152 + i32.const 82 + i32.const 40 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const -16 - i32.and + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + 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=1568 - local.tee $3 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + i32.const 1088 + i32.const 1776 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store + local.get $0 + i32.load offset=4 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 4 + i32.const 2 + i32.shl i32.add - local.get $3 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $3 - i32.const 2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> (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.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - local.get $3 - i32.store offset=1568 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $4 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 i32.const 0 - i32.le_s + i32.lt_s if (result i32) - i32.const 1 local.get $1 - i32.sub - memory.grow + local.get $4 + i32.add + local.tee $1 i32.const 0 - i32.lt_s - else + 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 - if - unreachable + local.tee $5 + i32.const 2 + i32.shl + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + 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 + i32.add + local.tee $0 + i32.const 0 + 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 - i32.const 36736 + local.get $5 + i32.sub + local.tee $0 i32.const 0 - i32.store - i32.const 38304 + local.get $0 i32.const 0 - i32.store - loop $for-loop|0 + i32.gt_s + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.gt_u if - local.get $0 - i32.const 2 - i32.shl - i32.const 36736 + local.get $1 + local.get $2 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36736 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 + local.get $1 + local.get $3 + 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 $1 + i32.const 4 i32.add - local.set $0 - br $for-loop|0 + local.set $1 + br $while-continue|0 end end - i32.const 36736 - i32.const 38308 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36736 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/rt/tlsf/__free (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 36728 - i32.lt_u + (func $~lib/staticarray/StaticArray#lastIndexOf (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 3960 + i32.lt_s if - return + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 2 + i32.shr_u + local.tee $3 i32.eqz if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return 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 + local.get $2 + local.get $3 + i32.add + local.get $3 i32.const 1 - local.get $0 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s select - if (result i32) + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $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 + ) + (func $~lib/staticarray/StaticArray#indexOf (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 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 i32.const 1 - else - local.get $1 - i32.load i32.const 1 - i32.and + 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.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return end + local.get $2 + i32.const 0 + i32.lt_s if + local.get $2 + local.get $3 + i32.add + local.tee $2 i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 + 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 $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $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/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs (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 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz + i32.const 0 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $2 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $4 + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.ge_s + return + end + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36736 + i32.const 0 + i32.store + i32.const 38304 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36736 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36736 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36736 + i32.const 38308 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36736 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 i32.const -4 i32.and local.set $0 @@ -1245,1007 +1608,988 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end + (func $~lib/util/sort/insertionSort (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.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $3 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.sub + i32.const 1 + i32.add + local.tee $4 + local.get $3 + i32.sub + i32.const 1 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 + i32.sub + local.get $4 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $6 + loop $for-loop|0 local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $6 + i32.ge_s + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $6 i32.const 2 i32.shl i32.add + local.tee $3 i32.load offset=4 - local.tee $2 - i32.eqz + local.tee $5 + local.set $4 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s if - i32.const 0 - i32.const 1616 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $3 + local.set $4 + local.get $5 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $7 + local.get $8 + i32.store offset=8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 + local.get $5 + i32.const 2 i32.shl i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $7 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + end + local.get $0 + local.get $5 i32.const 2 i32.shl i32.add - i32.load offset=96 - else - i32.const 0 + local.get $4 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + (func $~lib/staticarray/StaticArray#__set (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 3960 + i32.lt_s if - i32.const 1344 - i32.const 1616 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable + i32.const 36752 + i32.const 36800 + 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 - local.get $1 - i32.const 12 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz if - local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - 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.add - i32.const 1 - i32.sub - else - local.get $3 - end - else - local.get $3 - end - i32.const 4 - local.get $0 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - 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 - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.const 1088 + i32.const 1152 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable end - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 i32.load - i32.const -4 + local.tee $3 + i32.const 1 i32.and - i32.gt_u + i32.eqz if i32.const 0 i32.const 1616 - i32.const 501 + i32.const 268 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 $4 local.get $3 - i32.const 4 - i32.add - i32.const 15 + i32.const -4 i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1616 - i32.const 361 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const -4 - i32.and local.get $3 - i32.sub - local.tee $2 - i32.const 16 - i32.ge_u - if - local.get $1 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 - local.get $4 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 i32.const 4 - i32.add + i32.shr_u + else + i32.const 31 + i32.const 1073741820 local.get $3 - i32.add + local.get $3 + i32.const 1073741820 + i32.ge_u + select local.tee $3 - local.get $2 - i32.const 4 + i32.clz i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 local.get $4 - i32.const -2 - i32.and - i32.store - local.get $1 i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and - i32.store + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 - ) - (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 + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1344 - i32.const 1408 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1616 + i32.const 284 + i32.const 14 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.get $0 - i32.const 16 - i32.add - 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 $1 i32.load offset=8 - local.set $3 - local.get $2 + local.set $5 local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 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 $1 - i32.const 0 - local.get $0 - 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 + local.tee $4 if - return + local.get $4 + local.get $5 + i32.store offset=8 end - local.get $0 - i32.eqz + local.get $5 if - i32.const 0 - i32.const 1408 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $4 + i32.store offset=4 end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + i32.load offset=96 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 + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 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 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 local.get $3 - i32.const 3 - i32.eq + i32.rotl i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end end end ) - (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 1 - i32.add - ) - (func $start:std/staticarray~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $std/staticarray/maxVal - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - global.set $std/staticarray/maxVal - ) - (func $start:std/staticarray~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/staticarray~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:std/staticarray~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.eq - ) - (func $start:std/staticarray~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 4 - i32.eq - ) - (func $start:std/staticarray~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 3 - i32.le_s - ) - (func $start:std/staticarray~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 3 - i32.gt_s - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $1 - local.get $3 - local.get $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.sub + i32.load + local.tee $3 i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and i32.add local.tee $4 - local.get $3 - i32.sub + i32.load + local.tee $2 i32.const 1 i32.and - i32.sub - local.get $4 - i32.const 1 - i32.and - local.get $3 - select - i32.add - local.set $6 - loop $for-loop|0 + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add local.get $2 - local.get $6 - i32.ge_s + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - local.tee $5 - local.set $4 - local.get $3 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $5 - i32.const 3872 - i32.load - call_indirect (type $0) i32.const 0 - i32.le_s - if - local.get $3 - local.set $4 - local.get $5 - local.set $3 - end - local.get $6 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $7 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $3 - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $7 - local.get $8 - i32.store offset=8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - end - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $5 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $4 - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $7 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - end - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $for-loop|0 + i32.const 1616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 + local.get $4 local.get $2 - i32.eq + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if - local.get $1 - return + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 + local.get $4 local.get $1 - i32.const 1 + i32.const 4 i32.add - local.tee $3 - i32.const 2 - i32.shl + local.get $2 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.ne if - loop $while-continue|0 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - local.get $4 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $5 - local.get $4 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1344 + i32.const 1616 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 else - loop $while-continue|2 - local.get $2 + local.get $1 + 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 + i32.eqz + if + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) local.get $3 - i32.gt_s + i32.const 536870910 + i32.lt_u if (result i32) - local.get $0 local.get $3 - i32.const 2 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub i32.shl i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s + i32.const 1 + i32.sub else - i32.const 0 - end - if local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 end + else + local.get $3 end - end - local.get $3 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $7 - local.get $4 - i32.add - local.get $0 - local.get $7 - i32.add - i32.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $4 - local.get $6 - local.get $5 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - loop $for-loop|2 + i32.const 4 + local.get $0 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 local.get $1 - local.get $3 - i32.le_s + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $4 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - i32.const 3872 - i32.load - call_indirect (type $0) + memory.grow i32.const 0 i32.lt_s if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 + unreachable end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 501 + 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 $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 ) - (func $~lib/staticarray/StaticArray~visit (param $0 i32) + (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 + i32.const 36728 + i32.lt_u + if + return + end + 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 20 + i32.const 4 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 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 1616 + i32.const 562 + 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/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 + if + i32.const 0 + i32.const 1408 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$267 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 36728 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$267 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 3888 + i32.load + i32.gt_u + if + i32.const 1088 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 2 + i32.shl + i32.const 3892 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/__visit_members (param $0 i32) (local $1 i32) @@ -2405,304 +2749,287 @@ call $~lib/builtins/abort unreachable ) - (func $~start - call $start:std/staticarray - ) - (func $~lib/staticarray/StaticArray#__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 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - 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.store - local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 78 - i32.const 41 - call $~lib/builtins/abort - unreachable - end + (func $start:std/staticarray~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.eq ) - (func $~lib/staticarray/StaticArray#__set (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 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - 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.store + (func $start:std/staticarray~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 2 - i32.shr_u + i32.eq + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $2 i32.const 1 - i32.le_u - if - i32.const 1088 - i32.const 1152 - i32.const 93 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/staticarray/Ref#constructor (result i32) - (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 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 + local.tee $5 + local.get $3 + i32.add + local.set $6 + local.get $5 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 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 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $7 + local.get $4 + i32.add + local.get $0 + local.get $7 + i32.add + i32.load i32.store + br $for-loop|0 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return end - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#get:length (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 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $4 + local.get $6 + local.get $5 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/staticarray/StaticArray.fromArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + local.get $2 + i32.eq if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - call $~lib/array/Array#get:length + local.get $1 i32.const 2 i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.add + i32.load local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1088 - i32.const 1776 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + local.tee $3 i32.const 2 i32.shl i32.add i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + local.get $3 ) - (func $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> (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 @@ -2735,11 +3062,7 @@ local.get $1 i32.store local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u + call $~lib/array/Array#get:length local.tee $2 local.get $3 i32.add @@ -2754,172 +3077,134 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $0 local.get $3 i32.const 2 i32.shl - local.tee $0 - memory.copy + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.add - local.get $1 - local.get $2 - i32.const 2 - i32.shl - memory.copy + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $4 - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> (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.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u + local.get $3 + i32.load offset=4 local.set $4 - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 + i32.load offset=4 + local.set $6 i32.const 0 - i32.lt_s - if (result i32) + local.set $1 + loop $for-loop|0 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 + local.get $5 + i32.lt_u + if + local.get $1 + local.get $4 + i32.add + local.get $0 + local.get $1 + 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 $1 + i32.const 4 + i32.add + local.set $1 + br $for-loop|0 + end end - local.tee $5 - i32.const 2 - i32.shl + local.get $4 + local.get $5 i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 0 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 - i32.add - local.tee $0 - i32.const 0 - 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.get $5 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select i32.const 2 i32.shl - local.tee $0 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - loop $while-continue|0 + local.set $2 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - local.get $1 - i32.gt_u + local.get $2 + i32.lt_u if + local.get $0 local.get $1 - local.get $2 i32.add - local.get $1 - local.get $3 + local.get $0 + local.get $6 i32.add i32.load local.tee $4 i32.store - local.get $2 + local.get $3 local.get $4 i32.const 1 call $~lib/rt/itcms/__link - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 - br $while-continue|0 + local.set $0 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + ) + (func $~lib/staticarray/StaticArray#some (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 @@ -2938,19 +3223,97 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + 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 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 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - i32.const 0 - local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - i32.const 2147483647 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/staticarray/StaticArray#lastIndexOf@varargs (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 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + 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 2 + i32.shr_u local.set $2 end global.get $~lib/memory/__stack_pointer @@ -2959,15 +3322,17 @@ local.get $0 local.get $1 local.get $2 - call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + call $~lib/staticarray/StaticArray#lastIndexOf global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2982,59 +3347,68 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $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.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 78 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 2336 - i32.const 1152 - i32.const 82 - i32.const 40 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + 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 - local.get $0 + i32.const -1 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray#findIndex (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.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3049,156 +3423,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $2 local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) + i32.lt_s + if + local.get $0 local.get $2 - i32.const 7 - i32.and + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$106 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$106 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end + return end - i32.const 0 - local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + i32.const -1 ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3213,8 +3497,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3225,252 +3509,55 @@ i32.const 2 i32.shr_u local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.tee $2 - local.get $3 - i32.add - local.tee $4 - i32.const 268435455 - i32.gt_u - if - i32.const 1680 - i32.const 1152 - i32.const 178 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 2 - i32.shl - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 9 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $1 loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_u + local.get $2 + local.get $3 + i32.lt_s if - local.get $1 - local.get $4 - i32.add local.get $0 - local.get $1 + local.get $2 + i32.const 2 + i32.shl i32.add i32.load - local.tee $7 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $3 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $4 - local.get $5 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.shl - local.set $2 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_u - if + i32.const 3 + global.set $~argumentsLength + local.get $2 local.get $0 local.get $1 - i32.add - local.get $0 - local.get $6 - i32.add i32.load - local.tee $4 - i32.store - local.get $3 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $3 + call_indirect (type $1) i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or if global.get $~lib/memory/__stack_pointer - i32.const 8 + 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$274 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $4 - local.get $1 - call $~lib/string/String.__eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $2 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.ge_s - return end - i32.const 36752 - i32.const 36800 - i32.const 1 + 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 $~lib/staticarray/StaticArray#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> (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.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3485,8 +3572,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3496,162 +3583,67 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 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 $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - local.get $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/staticarray/StaticArray#lastIndexOf (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 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 - i32.eqz + local.tee $2 + local.get $3 + i32.add + local.tee $4 + 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 -1 - return + i32.const 1680 + i32.const 1152 + i32.const 178 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 local.get $3 + i32.const 2 + i32.shl + local.tee $0 + memory.copy + local.get $0 + local.get $4 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 $1 local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end + i32.const 2 + i32.shl + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $4 ) - (func $~lib/staticarray/StaticArray#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray.fromArray (param $0 i32) (result 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 global.get $~lib/memory/__stack_pointer @@ -3666,707 +3658,425 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - 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 2 - i32.shr_u - local.set $2 - end + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 - call $~lib/staticarray/StaticArray#lastIndexOf + local.get $0 + i32.load offset=4 + local.get $1 + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 1 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s + i32.const 256 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2928 - return - end - local.get $5 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 2928 - local.get $0 - select - return - end - loop $for-loop|0 local.get $1 - local.get $4 - i32.gt_s + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $3 - end - local.get $4 i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + i32.sub + local.set $1 end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 16 + i32.lt_u local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $5 - i32.mul + i32.const 2 + i32.shl i32.add - i32.const 1 + i32.load offset=4 + i32.const -1 + local.get $1 i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=12 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - local.get $3 + local.get $1 + i32.ctz + local.tee $1 i32.const 2 i32.shl i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 + i32.load offset=4 + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $6 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $7 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $7 - i32.const 1 - i32.shl - memory.copy - local.get $4 - local.get $7 - i32.add - local.set $4 + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz local.get $1 - if - local.get $6 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $4 - end - local.get $3 - i32.const 1 + i32.const 4 + i32.shl i32.add - local.set $3 - br $for-loop|1 + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $6 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (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 - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - i32.const 2 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $0 - local.get $2 local.get $1 - call $~lib/util/string/joinStringArray - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/staticarray/StaticArray#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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const -16 + i32.and + i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - local.tee $10 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 3 - global.set $~argumentsLength - local.get $8 - local.get $9 - local.get $0 - i32.const 3472 - i32.load - call_indirect (type $1) - if - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - i32.load offset=12 - local.tee $6 - i32.const 1 - i32.add - local.tee $5 - 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 3960 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $3 - local.get $10 - i32.load offset=8 - local.tee $1 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $3 - i32.const 268435455 - i32.gt_u - if - i32.const 1680 - i32.const 1776 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$224 - i32.const 1073741820 - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - local.get $1 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.const 8 - local.get $3 - local.get $3 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $4 - local.get $10 - i32.load - local.tee $1 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $3 - local.get $4 - i32.store offset=16 - local.get $1 - local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$224 - end - local.get $4 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $1 - local.get $4 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_u - select - memory.copy - end - local.get $1 - local.get $2 - i32.ne - if - local.get $10 - local.get $2 - i32.store - local.get $10 - local.get $2 - i32.store offset=4 - local.get $10 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $10 - local.get $4 - i32.store offset=8 - 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.get $10 - i32.store - local.get $10 - i32.load offset=4 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + 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 - local.get $10 - return end - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/staticarray/StaticArray#some (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 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $3 + i32.store offset=1568 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + global.get $std/staticarray/arr3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1680 + call $~lib/rt/itcms/__visit + i32.const 2336 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne if local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.load offset=4 i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) + i32.and + i32.const 3 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + i32.const 0 + i32.const 1408 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.const 1 + local.get $0 + i32.const 20 i32.add - local.set $2 - br $for-loop|0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + 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/staticarray/StaticArray#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $std/staticarray/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - 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.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3960 i32.lt_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + 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 0 + i32.const 0 + 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 8 + 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 + i32.const 36752 + i32.const 36800 i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/staticarray/StaticArray#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $start:std/staticarray~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $~start + call $start:std/staticarray + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4381,134 +4091,201 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $3 + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2928 + return + end + local.get $5 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2928 + local.get $0 + select + return + end loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s + local.get $1 + local.get $4 + i32.gt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + local.get $4 i32.const 2 i32.shl i32.add i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) + local.tee $6 + i32.store offset=4 + local.get $6 if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $6 + i32.store offset=8 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return + local.set $3 end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 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 - ) - (func $~lib/staticarray/StaticArray#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 i32.const 20 i32.sub i32.load offset=16 - i32.const 2 + i32.const 1 i32.shr_u + local.tee $1 + local.get $5 + i32.mul + i32.add i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $5 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) + local.tee $7 + i32.store offset=4 + local.get $7 if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $7 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $7 + i32.add + local.set $4 + end + local.get $1 + if + local.get $6 + local.get $4 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - return + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $4 end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $6 ) (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (local $2 i32) @@ -4822,132 +4599,419 @@ i32.gt_u if local.get $1 - i32.const 2 - i32.shl - local.tee $13 - local.get $9 - i32.add - local.tee $14 - i32.load - local.tee $7 - i32.const -1 + i32.const 2 + i32.shl + local.tee $13 + local.get $9 + i32.add + local.tee $14 + i32.load + local.tee $7 + i32.const -1 + i32.ne + if + local.get $10 + local.get $13 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + local.get $7 + local.get $2 + local.get $4 + local.get $11 + call $~lib/util/sort/mergeRuns + local.get $14 + i32.const -1 + i32.store + local.get $7 + local.set $2 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $6 + i32.const 2 + i32.shl + local.tee $1 + local.get $9 + i32.add + local.get $2 + i32.store + local.get $1 + local.get $10 + i32.add + local.get $4 + i32.store + local.get $5 + local.set $2 + local.get $3 + local.set $4 + local.get $6 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $9 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $2 + local.get $10 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $8 + local.get $11 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $11 + call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free + 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 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/staticarray/StaticArray#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) + (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 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $10 + i32.store + 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 + i32.const 2 + i32.shr_u + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $9 + i32.gt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $8 + local.get $9 + local.get $0 + i32.const 3472 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.add + local.tee $5 + 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 3960 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $3 + local.get $10 + i32.load offset=8 + local.tee $1 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1680 + i32.const 1776 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$224 + i32.const 1073741820 + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + local.get $1 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $3 + local.get $3 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $4 + local.get $10 + i32.load + local.tee $1 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $4 + i32.store offset=16 + local.get $1 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$224 + end + local.get $4 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + local.get $4 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_u + select + memory.copy + end + local.get $1 + local.get $2 i32.ne if local.get $10 - local.get $13 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store - local.get $0 - local.get $7 local.get $2 - local.get $4 - local.get $11 - call $~lib/util/sort/mergeRuns - local.get $14 - i32.const -1 i32.store - local.get $7 - local.set $2 + local.get $10 + local.get $2 + i32.store offset=4 + local.get $10 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 + local.get $10 + local.get $4 + i32.store offset=8 end - end - local.get $6 - i32.const 2 - i32.shl - local.tee $1 - local.get $9 - i32.add - local.get $2 - i32.store - local.get $1 - local.get $10 - i32.add - local.get $4 - i32.store - local.get $5 - local.set $2 - local.get $3 - local.set $4 - local.get $6 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $2 - local.get $9 - i32.add - i32.load - local.tee $3 - i32.const -1 - i32.ne - if - local.get $2 - local.get $10 - i32.add - i32.load - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3872 + local.get $10 i32.store - local.get $0 - local.get $3 - local.get $2 + local.get $10 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add local.get $8 - local.get $11 - call $~lib/util/sort/mergeRuns + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $1 + local.get $9 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $9 + br $for-loop|0 end end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $9 - call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $10 return end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:std/staticarray~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.gt_s + ) + (func $start:std/staticarray~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.le_s + ) + (func $start:std/staticarray~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/staticarray~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/staticarray/maxVal + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + global.set $std/staticarray/maxVal + ) + (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer ) (func $start:std/staticarray (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 f32) - (local $5 i32) + (local $3 i32) + (local $4 f64) + (local $5 f32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 104 i32.sub @@ -5118,17 +5182,17 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.const 1312 i32.const 12 memory.copy - local.get $5 + local.get $6 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -5143,9 +5207,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -5160,9 +5224,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -5177,9 +5241,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 20 i32.sub i32.load offset=16 @@ -5197,16 +5261,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -5222,17 +5286,17 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.const 1312 i32.const 12 memory.copy - local.get $5 + local.get $6 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -5249,25 +5313,25 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 call $std/staticarray/Ref#constructor - local.tee $6 + local.tee $7 i32.store - local.get $5 local.get $6 + local.get $7 i32.const 1 call $~lib/rt/itcms/__link - local.get $5 + local.get $6 call $std/staticarray/Ref#constructor - local.tee $6 + local.tee $7 i32.store offset=4 - local.get $5 local.get $6 + local.get $7 i32.const 1 call $~lib/rt/itcms/__link - local.get $5 + local.get $6 global.set $std/staticarray/arr4 i32.const 0 global.set $std/staticarray/arr3 @@ -5289,18 +5353,18 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5318,10 +5382,10 @@ end loop $for-loop|0 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store local.get $0 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5330,9 +5394,9 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 local.get $0 call $~lib/staticarray/StaticArray#__get if @@ -5363,24 +5427,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/staticarray/StaticArray.fromArray - local.tee $5 + local.tee $6 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 call $~lib/array/Array#get:length - local.get $6 + local.get $7 i32.ne if i32.const 0 @@ -5400,19 +5464,19 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 local.get $1 call $~lib/staticarray/StaticArray#__get - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 call $~lib/array/Array#__get - local.get $6 + local.get $7 i32.ne if i32.const 0 @@ -5463,35 +5527,35 @@ i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 1856 i64.load align=1 i64.store align=1 - local.get $1 + local.get $0 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.const 1888 i32.load align=1 i32.store align=1 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=24 - local.get $1 - local.get $5 + local.get $0 + local.get $6 call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> - local.tee $0 + local.tee $1 i32.store offset=28 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5508,37 +5572,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.const 1920 i32.const 0 memory.copy global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=24 - local.get $1 - local.get $5 + local.get $0 + local.get $6 call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> - local.tee $0 + local.tee $1 i32.store offset=28 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5570,12 +5634,12 @@ i32.const 4 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 2080 i32.load align=1 i32.store align=1 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5599,18 +5663,18 @@ i32.shr_u local.set $0 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $7 - local.get $0 - i32.add local.tee $8 + i32.add + local.tee $9 i32.const 268435455 i32.gt_u if @@ -5624,69 +5688,69 @@ local.get $0 i32.const 2 i32.shl - local.set $0 + local.set $10 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.const 2 i32.shl i32.const 8 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $9 i32.store offset=4 loop $for-loop|03 - local.get $0 - local.get $2 - i32.gt_u + local.get $3 + local.get $10 + i32.lt_u if - local.get $2 - local.get $8 + local.get $3 + local.get $9 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load - local.tee $9 + local.tee $0 i32.store - local.get $8 local.get $9 + local.get $0 i32.const 1 call $~lib/rt/itcms/__link - local.get $2 + local.get $3 i32.const 4 i32.add - local.set $2 + local.set $3 br $for-loop|03 end end - local.get $0 - local.get $8 + local.get $9 + local.get $10 i32.add local.set $1 - local.get $7 + local.get $8 i32.const 2 i32.shl - local.set $2 + local.set $3 i32.const 0 local.set $0 loop $for-loop|14 local.get $0 - local.get $2 + local.get $3 i32.lt_u if local.get $0 local.get $1 i32.add local.get $0 - local.get $6 + local.get $7 i32.add i32.load - local.tee $7 + local.tee $8 i32.store + local.get $9 local.get $8 - local.get $7 i32.const 1 call $~lib/rt/itcms/__link local.get $0 @@ -5700,12 +5764,12 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=36 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 i32.const 20 i32.sub i32.load offset=16 @@ -5725,36 +5789,36 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 2288 i32.const 20 memory.copy - local.get $2 + local.get $0 i32.store offset=40 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs - local.tee $0 + local.tee $3 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5773,10 +5837,10 @@ local.set $1 loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store local.get $1 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5785,27 +5849,27 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=48 - local.get $2 + local.get $0 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=48 - local.get $0 + local.get $3 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=24 - local.get $5 local.get $6 + local.get $7 call $~lib/string/String.__eq i32.eqz if @@ -5824,19 +5888,19 @@ end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 1 i32.const 3 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5853,16 +5917,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 + local.get $3 i32.const 2144 call $~lib/string/String.__eq i32.eqz @@ -5875,16 +5939,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 2176 call $~lib/string/String.__eq i32.eqz @@ -5897,29 +5961,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5937,28 +6001,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 0 i32.const 50 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5974,20 +6038,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 100 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6002,20 +6066,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6032,16 +6096,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 2240 call $~lib/string/String.__eq i32.eqz @@ -6054,19 +6118,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const -2 i32.const -2 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6081,10 +6145,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> @@ -6135,38 +6199,38 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2464 i32.const 20 memory.copy - local.get $1 + local.get $0 i32.store offset=52 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 9 i32.const 2512 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=24 - local.get $1 - local.get $2 + local.get $0 + local.get $3 call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -6182,31 +6246,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 9 i32.const 2576 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=24 - local.get $1 - local.get $2 + local.get $0 + local.get $3 call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -6227,16 +6291,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2608 i32.const 20 memory.copy - local.get $1 + local.get $0 i32.store offset=60 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2144 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -6251,9 +6315,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2544 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -6266,9 +6330,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2240 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -6281,9 +6345,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2240 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -6297,40 +6361,38 @@ call $~lib/builtins/abort unreachable end + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2656 + i64.load align=1 + i64.store align=1 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes$276 (result i32) - i32.const 8 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $0 - i32.const 2656 - i64.load align=1 - i64.store align=1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 3 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -6343,16 +6405,16 @@ loop $while-continue|0 local.get $1 local.get $2 - i32.lt_s + i32.gt_s if local.get $0 - local.get $1 + local.get $2 i32.const 3 i32.shl i32.add f64.load - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f64.ne if global.get $~lib/memory/__stack_pointer @@ -6362,10 +6424,10 @@ i32.const 1 br $__inlined_func$~lib/staticarray/StaticArray#includes$276 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end @@ -6384,40 +6446,40 @@ call $~lib/builtins/abort unreachable end + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2688 + i32.load align=1 + i32.store align=1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + 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 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes$277 (result i32) - i32.const 4 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $0 - i32.const 2688 - i32.load align=1 - i32.store align=1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 2 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -6430,16 +6492,16 @@ loop $while-continue|030 local.get $1 local.get $2 - i32.lt_s + i32.gt_s if local.get $0 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f32.ne if global.get $~lib/memory/__stack_pointer @@ -6449,10 +6511,10 @@ i32.const 1 br $__inlined_func$~lib/staticarray/StaticArray#includes$277 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|030 end end @@ -6475,16 +6537,16 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2720 i32.const 12 memory.copy - local.get $1 + local.get $0 i32.store offset=64 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const 0 call $~lib/staticarray/StaticArray#indexOf @@ -6497,9 +6559,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 7 i32.const 0 call $~lib/staticarray/StaticArray#indexOf @@ -6514,9 +6576,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 9 i32.const 2 call $~lib/staticarray/StaticArray#indexOf @@ -6531,9 +6593,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const -1 call $~lib/staticarray/StaticArray#indexOf @@ -6548,9 +6610,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const -3 call $~lib/staticarray/StaticArray#indexOf @@ -6566,18 +6628,18 @@ i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2752 i32.const 16 memory.copy - local.get $1 + local.get $0 i32.store offset=68 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#lastIndexOf@varargs i32.const 3 @@ -6591,11 +6653,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.const 7 call $~lib/staticarray/StaticArray#lastIndexOf@varargs i32.const -1 @@ -6609,9 +6671,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/staticarray/StaticArray#lastIndexOf @@ -6626,9 +6688,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const 2 call $~lib/staticarray/StaticArray#lastIndexOf @@ -6641,9 +6703,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray#lastIndexOf @@ -6656,9 +6718,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const -1 call $~lib/staticarray/StaticArray#lastIndexOf @@ -6676,23 +6738,23 @@ i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2896 i32.const 12 memory.copy - local.get $1 + local.get $0 i32.store offset=72 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 2960 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 2992 call $~lib/string/String.__eq i32.eqz @@ -6705,16 +6767,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 2928 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 3040 call $~lib/string/String.__eq i32.eqz @@ -6727,16 +6789,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 3088 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 3120 call $~lib/string/String.__eq i32.eqz @@ -6749,16 +6811,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 3168 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 3200 call $~lib/string/String.__eq i32.eqz @@ -6771,17 +6833,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=48 - local.get $1 + local.get $0 i32.const 2960 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=48 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6795,21 +6857,21 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2960 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 + 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 $1 - i32.store offset=24 local.get $0 + i32.store offset=24 local.get $1 + local.get $0 call $~lib/string/String.__eq i32.eqz if @@ -6824,14 +6886,14 @@ i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3264 i64.load align=1 i64.store align=1 - local.get $1 + local.get $0 i32.store offset=76 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 2 global.set $~argumentsLength @@ -6847,7 +6909,7 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6861,37 +6923,40 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - i32.const 1 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.set $2 + i32.const 1 + local.get $2 local.get $2 i32.const 1 - i32.gt_u + i32.gt_s select - local.set $0 + local.set $1 + local.get $2 + local.set $2 loop $for-loop|032 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $1 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.const 1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|032 end end @@ -6904,9 +6969,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -6918,9 +6983,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6937,14 +7002,14 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3296 i32.const 12 memory.copy - local.get $1 + local.get $0 i32.store offset=80 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6958,9 +7023,9 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -6971,22 +7036,22 @@ i32.gt_u if i32.const 0 - local.set $0 + local.set $1 local.get $2 i32.const 1 i32.shr_u - local.set $5 + local.set $3 local.get $2 i32.const 1 i32.sub local.set $2 loop $while-continue|035 - local.get $0 - local.get $5 + local.get $1 + local.get $3 i32.lt_u if - local.get $1 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -6994,9 +7059,9 @@ i32.load local.set $7 local.get $6 - local.get $1 - local.get $2 local.get $0 + local.get $2 + local.get $1 i32.sub i32.const 2 i32.shl @@ -7007,10 +7072,10 @@ local.get $6 local.get $7 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|035 end end @@ -7020,9 +7085,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -7036,9 +7101,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -7052,9 +7117,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -7071,14 +7136,14 @@ i32.const 20 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3328 i32.const 20 memory.copy - local.get $1 + local.get $0 i32.store offset=84 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 2 global.set $~argumentsLength @@ -7094,7 +7159,7 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -7108,47 +7173,55 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - local.get $1 - i32.const 3 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 + local.set $2 local.get $0 + local.get $0 + i32.const 3 + local.get $1 + local.get $1 i32.const 3 i32.gt_u select - local.tee $2 + local.tee $3 i32.const 2 i32.shl i32.add - local.get $0 + local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $0 - local.get $0 + local.get $1 + local.get $2 i32.add - local.tee $5 + local.tee $2 i32.const 0 - local.get $5 + local.get $2 i32.const 0 i32.gt_s select else - local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select end - local.get $2 + local.get $3 i32.sub local.tee $2 - local.get $0 - local.get $0 + local.get $1 + local.tee $1 + local.get $1 local.get $2 i32.gt_s select @@ -7164,9 +7237,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -7180,9 +7253,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -7196,9 +7269,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -7212,9 +7285,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -7228,9 +7301,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 4 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -7247,15 +7320,15 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 3376 i32.const 12 memory.copy - local.get $2 + local.get $0 i32.store offset=88 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3408 @@ -7272,16 +7345,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $5 + local.tee $3 i32.const 7 i32.const 0 call $~lib/rt/__newArray @@ -7294,22 +7367,22 @@ i32.load offset=4 local.set $7 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|038 - local.get $0 - local.get $5 + local.get $1 + local.get $3 i32.lt_s if local.get $0 + local.get $1 i32.const 2 i32.shl local.tee $8 - local.get $2 i32.add i32.load local.set $9 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 3 global.set $~argumentsLength @@ -7317,16 +7390,16 @@ local.get $8 i32.add local.get $9 + local.get $1 local.get $0 - local.get $2 i32.const 3408 i32.load call_indirect (type $1) i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|038 end end @@ -7385,7 +7458,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3440 @@ -7402,42 +7475,42 @@ i32.const 0 i32.store i32.const 0 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $0 + local.set $1 loop $for-loop|040 - local.get $0 local.get $1 + 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 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 3 global.set $~argumentsLength - local.get $1 local.get $2 + local.get $0 i32.const 3440 i32.load call_indirect (type $5) - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|040 end end @@ -7457,20 +7530,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3472 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 call $~lib/staticarray/StaticArray#filter - local.tee $0 + local.tee $1 i32.store offset=96 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -7483,9 +7556,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -7499,9 +7572,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -7515,13 +7588,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3504 i32.store offset=24 i32.const 0 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7534,46 +7607,46 @@ i32.const 0 i32.store i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $5 + local.set $3 loop $for-loop|042 - local.get $0 - local.get $5 + local.get $1 + local.get $3 i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 4 global.set $~argumentsLength - local.get $1 + local.get $2 local.get $6 + local.get $1 local.get $0 - local.get $2 i32.const 3504 i32.load - call_indirect (type $6) - local.set $1 - local.get $0 + call_indirect (type $7) + local.set $2 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|042 end end @@ -7581,7 +7654,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 6 i32.ne if @@ -7593,13 +7666,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3536 i32.store offset=24 i32.const 0 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7612,9 +7685,9 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7622,36 +7695,36 @@ i32.shr_u i32.const 1 i32.sub - local.set $0 + local.set $1 loop $for-loop|044 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $2 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 4 global.set $~argumentsLength + local.get $2 + local.get $3 local.get $1 - local.get $5 local.get $0 - local.get $2 i32.const 3536 i32.load - call_indirect (type $6) - local.set $1 - local.get $0 + call_indirect (type $7) + local.set $2 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $for-loop|044 end end @@ -7659,7 +7732,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 6 i32.ne if @@ -7671,12 +7744,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3568 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3568 call $~lib/staticarray/StaticArray#some i32.eqz @@ -7689,12 +7762,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3600 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3600 call $~lib/staticarray/StaticArray#some if @@ -7706,12 +7779,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3632 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3632 call $~lib/staticarray/StaticArray#every i32.eqz @@ -7724,12 +7797,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3664 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3664 call $~lib/staticarray/StaticArray#every if @@ -7741,12 +7814,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3696 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3696 call $~lib/staticarray/StaticArray#findIndex i32.const 1 @@ -7760,12 +7833,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3728 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3728 call $~lib/staticarray/StaticArray#findIndex i32.const -1 @@ -7779,12 +7852,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3760 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3760 call $~lib/staticarray/StaticArray#findLastIndex i32.const 1 @@ -7798,12 +7871,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3792 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3792 call $~lib/staticarray/StaticArray#findLastIndex i32.const -1 @@ -7820,14 +7893,14 @@ i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3824 i32.const 16 memory.copy - local.get $1 + local.get $0 i32.store offset=100 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 0 global.set $~argumentsLength @@ -7849,7 +7922,7 @@ i32.const 3872 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 3872 @@ -7866,20 +7939,20 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 3872 i32.store - local.get $1 local.get $0 + local.get $1 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 8 @@ -7890,9 +7963,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -7904,9 +7977,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -7920,9 +7993,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -7936,9 +8009,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -7999,68 +8072,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__newArray (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 - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - 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.const 2 - i32.shl - local.tee $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $4 - memory.copy - end - local.get $3 - i32.store - i32.const 16 - local.get $1 - 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 - ) ) diff --git a/tests/compiler/std/string-casemapping.release.wat b/tests/compiler/std/string-casemapping.release.wat index 6b316c227d..dc43d6fcf3 100644 --- a/tests/compiler/std/string-casemapping.release.wat +++ b/tests/compiler/std/string-casemapping.release.wat @@ -5,15 +5,15 @@ (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $9 (func (param i32 i32 i32))) - (type $10 (func (param i64) (result i32))) + (type $6 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $7 (func (param i64) (result i32))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (param i32 i32 i64))) + (type $10 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) - (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) + (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (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)) @@ -482,5275 +482,5275 @@ (data $178 (i32.const 21056) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\a4") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 19632 - call $~lib/rt/itcms/__visit - i32.const 20688 - call $~lib/rt/itcms/__visit - i32.const 1488 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + 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 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$81 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$81 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/itcms/__visit (param $0 i32) + (func $~lib/string/String#toLowerCase (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s if - return + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + i32.eqz if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$143 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 53848 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$143 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 21056 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 21060 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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/visitCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add + global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 2 i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_u if local.get $0 - local.get $2 - i32.const 2 + local.get $3 + i32.const 1 i32.shl i32.add local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + i32.load16_u + local.tee $4 + i32.const 7 + i32.shr_u if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 53856 - i32.const 0 - i32.store - i32.const 55424 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 53856 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 53856 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 + block $for-continue|0 + local.get $4 + i32.const 55295 + i32.sub + i32.const 1025 + i32.lt_u + local.get $3 + local.get $6 i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 53856 - i32.const 55428 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 53856 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 + i32.sub + i32.lt_u i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 53848 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne if local.get $1 - local.get $0 - i32.load offset=4 + i32.load16_u offset=2 local.tee $2 - i32.const 3 - i32.and - i32.ne + i32.const 56319 + i32.sub + i32.const 1025 + i32.lt_u if - local.get $0 + local.get $3 + i32.const 1 + i32.add + local.set $3 local.get $2 - i32.const -4 + i32.const 1023 i32.and - local.get $1 + local.get $4 + local.tee $1 + i32.const 1023 + i32.and + i32.const 10 + i32.shl i32.or - i32.store offset=4 - local.get $0 - i32.const 20 + i32.const 65536 i32.add - call $~lib/rt/__visit_members + local.tee $4 + i32.const 131072 + i32.ge_u + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-continue|0 + end end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 53848 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 53848 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $4 + i32.const 304 + i32.eq if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) + local.get $7 + local.get $8 i32.const 1 - else - local.get $2 - i32.load + i32.shl + i32.add + i32.const 50790505 + i32.store + local.get $8 i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 261 - 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$70 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1088 - i32.const 1424 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1424 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/util/casemap/casemap (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 8 - i32.shr_u - local.tee $2 - i32.const 6084 - i32.add - i32.load8_u - local.get $2 - i32.const 2444 - i32.add - i32.load8_u - i32.const 86 - i32.mul - i32.const 2444 - i32.add - local.get $0 - i32.const 255 - i32.and - local.tee $4 - i32.const 3 - i32.div_u - i32.add - i32.load8_u - local.get $4 - i32.const 3 - i32.rem_u - i32.const 2 - i32.shl - i32.const 5112 - i32.add - i32.load - i32.mul - i32.const 11 - i32.shr_u - i32.const 6 - i32.rem_u - i32.add - i32.const 2 - i32.shl - i32.const 5124 - i32.add - i32.load - local.tee $2 - i32.const 255 - i32.and - local.set $3 - local.get $2 - i32.const 8 - i32.shr_s - local.set $2 - block $folding-inner0 - local.get $3 - i32.const 2 - i32.lt_u - br_if $folding-inner0 - local.get $2 - i32.const 255 - i32.and - local.set $3 - local.get $2 - i32.const 8 - i32.shr_u - local.set $2 - loop $while-continue|0 - local.get $3 - if - local.get $2 - local.get $3 - i32.const 1 - i32.shr_u - local.tee $7 - i32.add - i32.const 1 - i32.shl - i32.const 6596 - i32.add - local.tee $5 - i32.load8_u - local.tee $6 - local.get $4 - i32.eq - if (result i32) - local.get $5 - i32.load8_u offset=1 - i32.const 2 - i32.shl - i32.const 5124 - i32.add - i32.load - local.tee $2 - i32.const 255 - i32.and - local.set $3 - local.get $2 - i32.const 8 - i32.shr_s - local.set $2 - local.get $3 - i32.const 2 - i32.lt_u - br_if $folding-inner0 - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.const 1 - i32.shl - i32.sub - return - else - local.get $4 - local.get $6 - i32.lt_u - if (result i32) - local.get $7 - else - local.get $2 - local.get $7 - i32.add - local.set $2 - local.get $3 - local.get $7 - i32.sub - end - end - local.set $3 - br $while-continue|0 - end - end - local.get $0 - return - end - local.get $0 - local.get $2 - i32.const 0 - local.get $1 - local.get $3 - i32.xor - i32.sub - i32.and - i32.add - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $3 - local.get $1 - i32.store offset=16 - local.get $0 - return - end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $0 - local.get $0 - local.get $1 - i32.gt_u - select - memory.copy - local.get $2 - ) - (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 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 - 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 19212 - 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 19212 - 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 $invalid - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - call $start:std/string-casemapping - ) - (func $~lib/string/String#toUpperCase (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 $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - local.tee $8 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.const 6 - i32.mul - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1488 - i32.store - i32.const 1484 - i32.load - i32.const 1 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_u - if - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_u - local.tee $2 - i32.const 7 - i32.shr_u - if - block $for-continue|0 - local.get $2 - i32.const 55295 - i32.sub - i32.const 1025 - i32.lt_u - local.get $7 - local.get $8 - i32.const 1 - i32.sub - i32.lt_u - i32.and - if - local.get $1 - i32.load16_u offset=2 - local.tee $4 - i32.const 56319 - i32.sub - i32.const 1025 - i32.lt_u - if - local.get $7 - i32.const 1 - i32.add - local.set $7 - local.get $4 - i32.const 1023 - i32.and - local.get $2 - local.tee $1 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.or - i32.const 65536 - i32.add - local.tee $2 - i32.const 131072 - i32.ge_u - if - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-continue|0 - end - end - end - local.get $2 - i32.const 9424 - i32.sub - i32.const 25 - i32.le_u - if - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 26 - i32.sub - i32.store16 - else - local.get $2 - i32.const 223 - i32.sub - i32.const 64056 - i32.le_u - if (result i32) - local.get $3 - local.set $1 - i32.const 0 - local.set $9 - block $~lib/util/casemap/bsearch|inlined.0 - loop $while-continue|1 - local.get $1 - local.get $9 - i32.ge_s - if - local.get $1 - local.get $9 - i32.add - i32.const 3 - i32.shr_u - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - i32.shl - i32.const 1488 - i32.add - i32.load16_u - local.get $2 - i32.sub - local.tee $10 - i32.eqz - br_if $~lib/util/casemap/bsearch|inlined.0 - local.get $10 - i32.const 31 - i32.shr_u - if - local.get $4 - i32.const 4 - i32.add - local.set $9 - else - local.get $4 - i32.const 4 - i32.sub - local.set $1 - end - br $while-continue|1 - end - end - i32.const -1 - local.set $4 - end - local.get $4 - else - i32.const -1 - end - local.tee $1 - i32.const -1 - i32.xor - if - local.get $1 - i32.const 1 - i32.shl - i32.const 1488 - i32.add - local.tee $1 - i32.load16_u offset=6 - local.set $2 - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.tee $4 - local.get $1 - i32.load offset=2 - i32.store - local.get $4 - local.get $2 - i32.store16 offset=4 - local.get $5 - local.get $2 - i32.const 0 - i32.ne - i32.const 1 - i32.add - i32.add - local.set $5 - else - local.get $2 - i32.const 1 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.tee $1 - i32.const 65536 - i32.lt_u - if - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.store16 - else - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 65536 - i32.sub - local.tee $1 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $1 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - end - end - end - else - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 2316 - i32.add - i32.load8_u - i32.store16 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 - local.get $5 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 $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 - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$81 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$81 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/string/String#toLowerCase (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 $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - local.tee $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 2 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_u - if - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_u - local.tee $4 - i32.const 7 - i32.shr_u - if - block $for-continue|0 - local.get $4 - i32.const 55295 - i32.sub - i32.const 1025 - i32.lt_u - local.get $3 - local.get $6 - i32.const 1 - i32.sub - i32.lt_u - i32.and - if - local.get $1 - i32.load16_u offset=2 - local.tee $2 - i32.const 56319 - i32.sub - i32.const 1025 - i32.lt_u - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $2 - i32.const 1023 - i32.and - local.get $4 - local.tee $1 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.or - i32.const 65536 - i32.add - local.tee $4 - i32.const 131072 - i32.ge_u - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $2 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-continue|0 - end - end - end - local.get $4 - i32.const 304 - i32.eq - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.const 50790505 - i32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - else - local.get $4 - i32.const 931 - i32.eq - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.const 962 - i32.const 963 - local.get $6 - i32.const 1 - i32.gt_u - if (result i32) - block $~lib/util/string/isFinalSigma|inlined.0 (result i32) - i32.const 0 - local.set $1 - local.get $3 - local.tee $2 - i32.const 30 - i32.sub - local.tee $4 - i32.const 0 - local.get $4 - i32.const 0 - i32.ge_s - select - local.set $5 - loop $while-continue|1 - local.get $2 - local.get $5 - i32.gt_s - if - i32.const -1 - local.set $4 - block $~lib/util/string/codePointBefore|inlined.0 - local.get $2 - i32.const 0 - i32.le_s - br_if $~lib/util/string/codePointBefore|inlined.0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $9 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - local.get $2 - i32.const 2 - i32.sub - local.tee $4 - i32.const 0 - i32.ge_s - i32.and - if - local.get $9 - i32.const 1023 - i32.and - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $10 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - i32.const 65536 - i32.add - local.set $4 - local.get $10 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - br_if $~lib/util/string/codePointBefore|inlined.0 - end - i32.const 65533 - local.get $9 - local.get $9 - i32.const 63488 - i32.and - i32.const 55296 - i32.eq - select - local.set $4 - end - local.get $4 - i32.const 918000 - i32.lt_u - if (result i32) - local.get $4 - 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 $4 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $4 - 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 $4 - i32.const 127370 - i32.lt_u - if (result i32) - local.get $4 - 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 $4 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $4 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $~lib/util/string/isFinalSigma|inlined.0 - drop - i32.const 1 - local.set $1 - end - local.get $2 - local.get $4 - i32.const 65536 - i32.ge_s - i32.const 1 - i32.add - i32.sub - local.set $2 - br $while-continue|1 - end - end - i32.const 0 - local.get $1 - i32.eqz - br_if $~lib/util/string/isFinalSigma|inlined.0 - drop - local.get $3 - i32.const 1 - i32.add - local.tee $2 - i32.const 30 - i32.add - local.tee $1 - local.get $6 - local.get $1 - local.get $6 - i32.lt_s - select - local.set $4 - loop $while-continue|2 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - local.tee $1 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - local.get $2 - i32.const 1 - i32.add - local.get $6 - i32.ne - i32.and - if - local.get $5 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $1 - i32.const 10 - i32.shl - local.get $5 - i32.add - i32.const 56613888 - i32.sub - local.set $1 - end - end - local.get $1 - i32.const 918000 - i32.lt_u - if (result i32) - local.get $1 - 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 - i32.eqz - if - local.get $1 - i32.const 127370 - i32.lt_u - if (result i32) - local.get $1 - 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 $2 - local.get $1 - i32.const 65536 - i32.ge_u - i32.const 1 - i32.add - i32.add - local.set $2 - br $while-continue|2 - end - end - i32.const 1 - end - else - i32.const 0 - end - select - i32.store16 - else - local.get $4 - i32.const 9398 - i32.sub - i32.const 25 - i32.le_u - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 26 - i32.add - i32.store16 - else - local.get $4 - i32.const 0 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.tee $1 - i32.const 65536 - i32.lt_u - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.store16 - else - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 65536 - i32.sub - local.tee $1 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $1 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - end - end - end - end - end - else - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 7084 - i32.add - i32.load8_u - i32.store16 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#codePointAt (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 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - 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.store - 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.le_u - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return - end - block $folding-inner0 - local.get $1 - i32.const 1 - i32.add - local.get $2 - i32.eq - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.tee $1 - i32.const 64512 - i32.and - i32.const 55296 - i32.ne - i32.or - br_if $folding-inner0 - local.get $0 - i32.load16_u offset=2 - local.tee $0 - i32.const 64512 - i32.and - i32.const 56320 - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.const 10 - i32.shl - local.get $0 - i32.add - i32.const 56613888 - i32.sub - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$148 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1056 - local.set $0 - br $__inlined_func$~lib/string/String#concat$148 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - 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 - return - end - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $start:std/string-casemapping - (local $0 i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - 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 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - memory.size - i32.const 16 - i32.shl - i32.const 53848 - 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 - i32.const 1056 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11808 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 11856 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11904 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 11952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12000 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12096 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12192 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12288 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12352 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12480 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12576 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12768 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12864 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13056 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13216 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13376 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13504 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13664 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13824 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13888 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13952 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14112 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14192 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14272 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14272 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14752 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14784 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14816 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14880 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14752 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15328 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15392 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - 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 $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - 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 $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15680 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15712 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15744 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15808 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15840 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15872 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15936 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16000 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16064 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16128 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16192 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16256 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.set $8 + else + local.get $4 + i32.const 931 + i32.eq + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + i32.const 962 + i32.const 963 + local.get $6 + i32.const 1 + i32.gt_u + if (result i32) + i32.const 0 + local.set $1 + local.get $3 + local.tee $2 + i32.const 30 + i32.sub + local.tee $4 + i32.const 0 + local.get $4 + i32.const 0 + i32.ge_s + select + local.set $5 + block $~lib/util/string/isFinalSigma|inlined.0 (result i32) + loop $while-continue|1 + local.get $2 + local.get $5 + i32.gt_s + if + i32.const -1 + local.set $4 + block $~lib/util/string/codePointBefore|inlined.0 + local.get $2 + i32.const 0 + i32.le_s + br_if $~lib/util/string/codePointBefore|inlined.0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $9 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + local.get $2 + i32.const 2 + i32.sub + local.tee $4 + i32.const 0 + i32.ge_s + i32.and + if + local.get $9 + i32.const 1023 + i32.and + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $10 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + i32.const 65536 + i32.add + local.set $4 + local.get $10 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + br_if $~lib/util/string/codePointBefore|inlined.0 + end + i32.const 65533 + local.get $9 + local.get $9 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + select + local.set $4 + end + local.get $4 + i32.const 918000 + i32.lt_u + if (result i32) + local.get $4 + 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 $4 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $4 + 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 $4 + i32.const 127370 + i32.lt_u + if (result i32) + local.get $4 + 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 $4 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $4 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + else + i32.const 0 + end + i32.eqz + br_if $~lib/util/string/isFinalSigma|inlined.0 + drop + i32.const 1 + local.set $1 + end + local.get $2 + local.get $4 + i32.const 65536 + i32.ge_s + i32.const 1 + i32.add + i32.sub + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + local.get $1 + i32.eqz + br_if $~lib/util/string/isFinalSigma|inlined.0 + drop + local.get $3 + i32.const 1 + i32.add + local.tee $2 + i32.const 30 + i32.add + local.tee $1 + local.get $6 + local.get $1 + local.get $6 + i32.lt_s + select + local.set $4 + loop $while-continue|2 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + local.tee $1 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + local.get $2 + i32.const 1 + i32.add + local.get $6 + i32.ne + i32.and + if + local.get $5 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $1 + i32.const 10 + i32.shl + local.get $5 + i32.add + i32.const 56613888 + i32.sub + local.set $1 + end + end + local.get $1 + i32.const 918000 + i32.lt_u + if (result i32) + local.get $1 + 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 + i32.eqz + if + local.get $1 + i32.const 127370 + i32.lt_u + if (result i32) + local.get $1 + 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 $2 + local.get $1 + i32.const 65536 + i32.ge_u + i32.const 1 + i32.add + i32.add + local.set $2 + br $while-continue|2 + end + end + i32.const 1 + end + else + i32.const 0 + end + select + i32.store16 + else + local.get $4 + i32.const 9398 + i32.sub + i32.const 25 + i32.le_u + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 26 + i32.add + i32.store16 + else + local.get $4 + i32.const 0 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.tee $1 + i32.const 65536 + i32.lt_u + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.store16 + else + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 65536 + i32.sub + local.tee $1 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $1 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + end + end + end + end + end + else + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 7084 + i32.add + i32.load8_u + i32.store16 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end end - i32.const 16320 - call $~lib/string/String#toLowerCase - local.set $5 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16384 - call $~lib/string/String#toLowerCase - local.set $5 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#toUpperCase (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 $10 i32) global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16448 - call $~lib/string/String#toLowerCase - local.set $5 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16480 - call $~lib/string/String.__eq - i32.eqz + i32.const 21080 + i32.lt_s if - i32.const 0 - i32.const 7024 - i32.const 68 + i32.const 53872 + i32.const 53920 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16512 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $5 - i32.const 16544 - call $~lib/string/String.__eq + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $8 i32.eqz if - i32.const 0 - i32.const 7024 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 16576 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 + i32.const 6 + i32.mul + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1488 i32.store - local.get $5 - i32.const 16608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1484 + i32.load + i32.const 1 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_u + if + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u + local.tee $2 + i32.const 7 + i32.shr_u + if + block $for-continue|0 + local.get $2 + i32.const 55295 + i32.sub + i32.const 1025 + i32.lt_u + local.get $7 + local.get $8 + i32.const 1 + i32.sub + i32.lt_u + i32.and + if + local.get $1 + i32.load16_u offset=2 + local.tee $4 + i32.const 56319 + i32.sub + i32.const 1025 + i32.lt_u + if + local.get $7 + i32.const 1 + i32.add + local.set $7 + local.get $4 + i32.const 1023 + i32.and + local.get $2 + local.tee $1 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.or + i32.const 65536 + i32.add + local.tee $2 + i32.const 131072 + i32.ge_u + if + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-continue|0 + end + end + end + local.get $2 + i32.const 9424 + i32.sub + i32.const 25 + i32.le_u + if + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 26 + i32.sub + i32.store16 + else + local.get $2 + i32.const 223 + i32.sub + i32.const 64056 + i32.le_u + if (result i32) + local.get $3 + local.set $1 + i32.const 0 + local.set $9 + block $~lib/util/casemap/bsearch|inlined.0 + loop $while-continue|1 + local.get $1 + local.get $9 + i32.ge_s + if + local.get $1 + local.get $9 + i32.add + i32.const 3 + i32.shr_u + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + i32.const 1488 + i32.add + i32.load16_u + local.get $2 + i32.sub + local.tee $10 + i32.eqz + br_if $~lib/util/casemap/bsearch|inlined.0 + local.get $10 + i32.const 31 + i32.shr_u + if + local.get $4 + i32.const 4 + i32.add + local.set $9 + else + local.get $4 + i32.const 4 + i32.sub + local.set $1 + end + br $while-continue|1 + end + end + i32.const -1 + local.set $4 + end + local.get $4 + else + i32.const -1 + end + local.tee $1 + i32.const -1 + i32.xor + if + local.get $1 + i32.const 1 + i32.shl + i32.const 1488 + i32.add + local.tee $1 + i32.load16_u offset=6 + local.set $2 + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.tee $4 + local.get $1 + i32.load offset=2 + i32.store + local.get $4 + local.get $2 + i32.store16 offset=4 + local.get $5 + local.get $2 + i32.const 0 + i32.ne + i32.const 1 + i32.add + i32.add + local.set $5 + else + local.get $2 + i32.const 1 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.tee $1 + i32.const 65536 + i32.lt_u + if + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.store16 + else + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 65536 + i32.sub + local.tee $1 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $1 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + end + end + end + else + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 2316 + i32.add + i32.load8_u + i32.store16 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end - i32.const 16640 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $6 local.get $5 - i32.const 16672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16704 - call $~lib/string/String#toLowerCase - local.set $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16736 - call $~lib/string/String.__eq + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 7024 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - i32.const 16768 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16800 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - i32.const 0 - i32.const 7024 - i32.const 74 + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$143 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 53848 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$143 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 21056 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 21060 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/visitCount i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 16832 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16864 - call $~lib/string/String.__eq - i32.eqz + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 75 - i32.const 1 + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - i32.const 16896 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16928 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - i32.const 16960 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16992 - call $~lib/string/String.__eq + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 7024 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - i32.const 17024 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17056 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 - i32.const 7024 - i32.const 80 - i32.const 1 + i32.const 1088 + i32.const 1424 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - i32.const 17088 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17120 - call $~lib/string/String.__eq + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + 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 $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - i32.const 7024 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - i32.const 17152 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store local.get $5 - i32.const 17184 - call $~lib/string/String.__eq - i32.eqz + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 - i32.const 7024 - i32.const 82 - i32.const 1 + i32.const 1424 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 17216 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 local.get $5 - i32.const 17248 - call $~lib/string/String.__eq - i32.eqz + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 - i32.const 7024 - i32.const 83 - i32.const 1 + i32.const 1424 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 17280 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $6 + i32.const -4 + i32.and local.get $5 - i32.const 16352 - call $~lib/string/String.__eq - i32.eqz + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 84 + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end - i32.const 17312 - call $~lib/string/String#toLowerCase - local.set $5 + local.get $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 $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17344 - call $~lib/string/String.__eq - i32.eqz + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s if - i32.const 0 - i32.const 7024 - i32.const 85 + i32.const 53872 + i32.const 53920 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17376 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 0 i32.store - local.get $5 - i32.const 17408 - call $~lib/string/String.__eq - i32.eqz + 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 + local.tee $2 + local.get $1 + i32.le_u if - i32.const 0 - i32.const 7024 - i32.const 86 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + block $folding-inner0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.get $2 + i32.eq + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.tee $1 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + i32.or + br_if $folding-inner0 + local.get $0 + i32.load16_u offset=2 + local.tee $0 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 10 + i32.shl + local.get $0 + i32.add + i32.const 56613888 + i32.sub + return end - i32.const 17440 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17472 - call $~lib/string/String.__eq - i32.eqz + 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) + (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 21080 + i32.lt_s if - i32.const 0 - i32.const 7024 - i32.const 87 + i32.const 53872 + i32.const 53920 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17504 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 0 i32.store - local.get $5 - i32.const 17536 - call $~lib/string/String.__eq - i32.eqz + 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 19200 + 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 + i32.const 1 + i32.shl + local.tee $2 + select + local.tee $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $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 $4 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + loop $while-continue|0 + local.get $0 + i64.const 100000000 + i64.ge_u + if + local.get $5 + 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 $4 + i32.const 10000 + i32.rem_u + local.tee $6 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $6 + 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 $5 + 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 19212 + i32.add + i64.load32_u + local.get $4 + 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 $5 + local.get $0 + i32.wrap_i64 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + end + local.get $2 if - i32.const 0 - i32.const 7024 - i32.const 88 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 45 + i32.store16 end - i32.const 17568 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$148 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$148 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + return end - i32.const 17632 - call $~lib/string/String#toLowerCase - local.set $5 + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17664 - call $~lib/string/String.__eq - i32.eqz + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s if - i32.const 0 - i32.const 7024 - i32.const 90 + i32.const 53872 + i32.const 53920 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17696 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 0 i32.store - local.get $5 - i32.const 17728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17760 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 2 + local.get $0 + i32.const 65535 + i32.gt_u + local.tee $2 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 i32.store - local.get $5 - i32.const 17792 - call $~lib/string/String.__eq - i32.eqz + local.get $2 if - i32.const 0 - i32.const 7024 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 1114111 + i32.gt_u + if + i32.const 0 + i32.const 15600 + i32.const 39 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.const 65536 + i32.sub + local.tee $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + else + local.get $1 + local.get $0 + i32.store16 end - i32.const 17824 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17856 - call $~lib/string/String.__eq + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 93 - i32.const 1 + i32.const 1424 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 17888 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17920 - call $~lib/string/String.__eq - i32.eqz + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 - i32.const 7024 - i32.const 94 - i32.const 1 + i32.const 1424 + i32.const 270 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 17952 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17984 - call $~lib/string/String.__eq + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 95 - i32.const 1 + i32.const 1424 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18016 - call $~lib/string/String#toLowerCase + local.get $1 + i32.load offset=8 local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end local.get $5 - i32.const 18048 - call $~lib/string/String.__eq + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 i32.eqz if i32.const 0 - i32.const 7024 - i32.const 96 - i32.const 1 + i32.const 1424 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18080 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18112 - call $~lib/string/String.__eq + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 99 - i32.const 1 + i32.const 1424 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 15328 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or i32.store - local.get $5 - i32.const 18144 - call $~lib/string/String.__eq - i32.eqz + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 - i32.const 7024 - i32.const 100 - i32.const 1 + i32.const 1424 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18176 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18208 - call $~lib/string/String.__eq - i32.eqz + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne if i32.const 0 - i32.const 7024 - i32.const 101 - i32.const 1 + i32.const 1424 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18240 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u local.get $5 - i32.const 18272 - call $~lib/string/String.__eq + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 102 - i32.const 1 + i32.const 1424 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18304 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $0 local.get $5 - i32.const 18336 - call $~lib/string/String.__eq - i32.eqz + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 0 - i32.const 7024 - i32.const 103 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - i32.const 18368 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 local.get $5 + i32.shl + i32.or i32.store + local.get $0 local.get $5 - i32.const 18400 - call $~lib/string/String.__eq - i32.eqz + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (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 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 + i32.const 100 + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 104 + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - i32.const 18432 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18400 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + i32.const 10 + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 105 + local.get $0 + local.get $2 + i32.const 2 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + 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 + 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/casemap/casemap (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 8 + i32.shr_u + local.tee $2 + i32.const 6084 + i32.add + i32.load8_u + local.get $2 + i32.const 2444 + i32.add + i32.load8_u + i32.const 86 + i32.mul + i32.const 2444 + i32.add + local.get $0 + i32.const 255 + i32.and + local.tee $4 + i32.const 3 + i32.div_u + i32.add + i32.load8_u + local.get $4 + i32.const 3 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5112 + i32.add + i32.load + i32.mul + i32.const 11 + i32.shr_u + i32.const 6 + i32.rem_u + i32.add + i32.const 2 + i32.shl + i32.const 5124 + i32.add + i32.load + local.tee $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_s + local.set $2 + block $folding-inner0 + local.get $3 + i32.const 2 + i32.lt_u + br_if $folding-inner0 + local.get $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_u + local.set $2 + loop $while-continue|0 + local.get $3 + if + local.get $2 + local.get $3 + i32.const 1 + i32.shr_u + local.tee $7 + i32.add + i32.const 1 + i32.shl + i32.const 6596 + i32.add + local.tee $5 + i32.load8_u + local.tee $6 + local.get $4 + i32.eq + if (result i32) + local.get $5 + i32.load8_u offset=1 + i32.const 2 + i32.shl + i32.const 5124 + i32.add + i32.load + local.tee $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_s + local.set $2 + local.get $3 + i32.const 2 + i32.lt_u + br_if $folding-inner0 + local.get $0 + i32.const 1 + i32.add + local.get $1 + i32.const 1 + i32.shl + i32.sub + return + else + local.get $4 + local.get $6 + i32.lt_u + if (result i32) + local.get $7 + else + local.get $2 + local.get $7 + i32.add + local.set $2 + local.get $3 + local.get $7 + i32.sub + end + end + local.set $3 + br $while-continue|0 + end + end + local.get $0 + return + end + local.get $0 + local.get $2 + i32.const 0 + local.get $1 + local.get $3 + i32.xor + i32.sub + i32.and + i32.add + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - i32.const 18464 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18496 - call $~lib/string/String.__eq + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 106 - i32.const 1 + i32.const 1424 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18528 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 107 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - i32.const 18592 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18624 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 108 + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 18656 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18688 - call $~lib/string/String.__eq - i32.eqz - if + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else i32.const 0 - i32.const 7024 - i32.const 109 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 18720 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18752 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 7024 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort unreachable end - i32.const 18784 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 53856 + i32.const 0 i32.store - local.get $5 - i32.const 18816 - call $~lib/string/String.__eq - i32.eqz + i32.const 55424 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 53856 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 53856 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 53856 + i32.const 55428 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 53856 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 - i32.const 7024 - i32.const 111 - i32.const 1 + i32.const 1424 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $4 - i32.const 1114111 - i32.le_s + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/string/String.fromCodePoint - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - call $~lib/string/String#toLowerCase - local.tee $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 local.get $5 - call $~lib/string/String#toUpperCase - local.tee $5 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.const 1 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $1 - i64.const 0 - i64.ge_s + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 19632 + call $~lib/rt/itcms/__visit + i32.const 20688 + call $~lib/rt/itcms/__visit + i32.const 1488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - local.get $0 - local.get $1 - i64.const 16 - i64.shl - i64.add - local.set $0 + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.const 2 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $1 - i64.const 0 - i64.ge_s - if (result i64) - local.get $0 - local.get $1 - i64.const 32 - i64.shl - i64.add - else - local.get $0 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $~start + call $start:std/string-casemapping + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end + global.get $~lib/rt/itcms/white + i32.eqz local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 0 - call $~lib/string/String#codePointAt - i64.extend_i32_s + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 1 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $2 - i64.const 0 - i64.ge_s - if - local.get $0 - local.get $2 - i64.const 16 - i64.shl - i64.add - local.set $0 - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 2 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $2 - i64.const 0 - i64.ge_s - if (result i64) - local.get $0 - local.get $2 - i64.const 32 - i64.shl - i64.add - else + loop $while-continue|1 local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.set $2 - local.get $4 i32.const 0 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.set $0 - local.get $4 - i32.const 1 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.tee $3 - i64.const 0 - i64.ge_s + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - local.get $0 - local.get $3 - i64.const 16 - i64.shl - i64.add + global.get $~lib/memory/__stack_pointer local.set $0 - end - local.get $4 - i32.const 2 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.tee $3 - i64.const 0 - i64.ge_s - if (result i64) - local.get $0 - local.get $3 - i64.const 32 - i64.shl - i64.add - else - local.get $0 - end - local.set $3 - local.get $4 - i32.const 0 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.set $0 - local.get $4 - i32.const 1 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.tee $7 - i64.const 0 - i64.ge_s - if - local.get $0 - local.get $7 - i64.const 16 - i64.shl - i64.add + loop $while-continue|0 + local.get $0 + i32.const 53848 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - end - local.get $4 - i32.const 2 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.tee $7 - i64.const 0 - i64.ge_s - if - local.get $0 - local.get $7 - i64.const 32 - i64.shl - i64.add + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - local.get $3 - i64.ne + i32.const 3 + i32.and + i32.ne if - i32.const 18848 - i32.const 1 - local.get $4 - f64.convert_i32_s - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $1 - call $~lib/util/number/itoa64 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - i32.const 18944 - local.get $5 - call $~lib/string/String.__concat - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $3 - call $~lib/util/number/itoa64 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - i32.const 20784 - local.get $5 - call $~lib/string/String.__concat - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end local.get $0 - local.get $2 - i64.ne + i32.const 53848 + i32.lt_u if - i32.const 20848 - i32.const 1 - local.get $4 - f64.convert_i32_s - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $2 - call $~lib/util/number/itoa64 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - i32.const 20944 - local.get $5 - call $~lib/string/String.__concat - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace local.get $0 - call $~lib/util/number/itoa64 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 0 i32.store offset=4 - i32.const 21008 - local.get $5 - call $~lib/string/String.__concat - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 + local.get $0 i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 53848 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $start:std/string-casemapping + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + 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 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 53848 + 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 + i32.const 1056 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11808 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 11856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11904 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 11952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12000 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12096 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12288 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12352 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12480 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12576 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12768 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12864 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13056 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13216 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13376 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13504 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13664 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13824 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13952 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14112 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14272 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14272 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14752 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14816 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14880 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14752 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15328 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15392 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + 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 $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + 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 $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15680 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15744 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15808 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15872 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15936 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16000 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16064 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16128 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16160 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16192 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16256 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16320 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16384 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16448 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16512 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16576 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16640 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16704 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16768 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16832 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16896 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + i32.const 16960 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + i32.const 17024 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + i32.const 17088 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + i32.const 17152 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 82 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17216 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17280 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17312 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17376 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17440 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17504 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17568 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17632 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17696 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17760 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17824 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17888 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17952 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17984 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18016 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18080 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 99 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15328 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 18176 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + local.get $5 + i32.store + local.get $5 + i32.const 18208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18240 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18304 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s + local.get $5 + i32.store + local.get $5 + i32.const 18336 + call $~lib/string/String.__eq + i32.eqz if - i32.const 53872 - i32.const 53920 + i32.const 0 + i32.const 7024 + i32.const 103 i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18368 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 18432 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $5 i32.store + local.get $5 + i32.const 18400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18464 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $0 - i32.const 65535 - i32.gt_u - local.tee $2 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $5 i32.store - local.get $2 + local.get $5 + i32.const 18496 + call $~lib/string/String.__eq + i32.eqz if - local.get $0 - i32.const 1114111 - i32.gt_u - if - i32.const 0 - i32.const 15600 - i32.const 39 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.const 65536 - i32.sub - local.tee $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - else - local.get $1 - local.get $0 - i32.store16 + i32.const 0 + i32.const 7024 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 18528 + call $~lib/string/String#toUpperCase + local.set $5 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) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $5 + i32.store + local.get $5 + i32.const 18560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18592 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18656 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s + local.get $5 + i32.store + local.get $5 + i32.const 18688 + call $~lib/string/String.__eq + i32.eqz if - i32.const 53872 - i32.const 53920 + i32.const 0 + i32.const 7024 + i32.const 109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18720 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 110 i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18784 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 19200 - 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 - i32.const 1 - i32.shl - local.tee $2 - select - local.tee $0 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.wrap_i64 - local.tee $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 + loop $for-loop|0 + local.get $4 + i32.const 1114111 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/string/String.fromCodePoint + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/string/String#toLowerCase + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/string/String#toUpperCase + local.tee $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 0 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 1 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $1 + i64.const 0 + i64.ge_s + if + local.get $0 local.get $1 - i32.const 1000 - i32.ge_u - i32.add + i64.const 16 + i64.shl + i64.add + local.set $0 end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $1 + i64.const 0 + i64.ge_s + if (result i64) + local.get $0 local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + i64.const 32 + i64.shl + i64.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.get $0 end - end - local.tee $4 - i32.const 1 - i32.shl - local.get $2 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $2 - local.get $3 - i32.add - local.get $1 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 1000000000000 - i64.lt_u - if (result i32) + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $2 + i64.const 0 + i64.ge_s + if local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add + local.get $2 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 2 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $2 + i64.const 0 + i64.ge_s + if (result i64) local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add + local.get $2 + i64.const 32 + i64.shl + i64.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.set $2 + local.get $4 + i32.const 0 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.set $0 + local.get $4 + i32.const 1 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.tee $3 + i64.const 0 + i64.ge_s + if local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else + local.get $3 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + local.get $4 + i32.const 2 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.tee $3 + i64.const 0 + i64.ge_s + if (result i64) local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add + local.get $3 + i64.const 32 + i64.shl + i64.add + else local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add end - end - local.tee $1 - i32.const 1 - i32.shl - local.get $2 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $2 - local.get $3 - i32.add - local.set $5 - loop $while-continue|0 - local.get $0 - i64.const 100000000 - i64.ge_u + local.set $3 + local.get $4 + i32.const 0 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.set $0 + local.get $4 + i32.const 1 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.tee $7 + i64.const 0 + i64.ge_s if - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add local.get $0 + local.get $7 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + local.get $4 + i32.const 2 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.tee $7 + i64.const 0 + i64.ge_s + if local.get $0 - i64.const 100000000 - i64.div_u - local.tee $0 - 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 19212 - i32.add - i64.load32_u - local.get $6 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u + local.get $7 i64.const 32 i64.shl - i64.or - i64.store - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 + i64.add + local.set $0 + end + local.get $1 + local.get $3 + i64.ne + if + i32.const 18848 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 19212 - i32.add - i64.load32_u + f64.convert_i32_s + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $1 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 18944 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $3 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 20784 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + end + local.get $0 + local.get $2 + i64.ne + if + i32.const 20848 + i32.const 1 local.get $4 - 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 + f64.convert_i32_s + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $2 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 20944 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $0 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 21008 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 end - local.get $5 - local.get $0 - i32.wrap_i64 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) ) diff --git a/tests/compiler/std/string-encoding.release.wat b/tests/compiler/std/string-encoding.release.wat index ca1f932b22..fb72c04a38 100644 --- a/tests/compiler/std/string-encoding.release.wat +++ b/tests/compiler/std/string-encoding.release.wat @@ -2,12 +2,12 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func)) (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) + (type $3 (func (param i32 i32 i32) (result i32))) (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32) (result i32))) + (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i64))) (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)) @@ -71,1227 +71,1069 @@ (data $26 (i32.const 22784) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1344 - call $~lib/rt/itcms/__visit - i32.const 1152 - call $~lib/rt/itcms/__visit - i32.const 1712 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 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 22804 + i32.lt_s if - return + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$158 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 55572 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$158 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 22784 - i32.load - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 22788 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + i32.store local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer 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/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) local.get $3 + local.tee $0 i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$94 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$94 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/string/String.UTF8.decodeUnsafe (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 $1 - i32.eqz + (local $7 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 22804 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 201 - i32.const 14 + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 local.tee $3 - i32.const 1 - i32.and - i32.eqz + local.get $1 + i32.add + local.set $5 + local.get $3 + local.get $5 + i32.gt_u if i32.const 0 - i32.const 1488 - i32.const 203 - i32.const 14 + i32.const 1776 + i32.const 770 + i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.set $1 + loop $while-continue|0 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + local.get $5 + i32.lt_u + if + block $while-break|0 + local.get $3 + i32.load8_u + local.set $6 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $6 + i32.const 128 + i32.and + if + local.get $3 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $7 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $6 + i32.const 224 + i32.and + i32.const 192 + i32.eq + if + local.get $1 + local.get $6 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $7 + i32.or + i32.store16 + else + local.get $3 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $4 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $6 + i32.const 240 + i32.and + i32.const 224 + i32.eq + if + local.get $6 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $7 + i32.const 6 + i32.shl + i32.or + local.get $4 + i32.or + local.set $4 + else + local.get $3 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $7 + i32.const 12 + i32.shl + i32.or + local.get $4 + i32.const 6 + i32.shl + i32.or + i32.or + local.set $4 + local.get $3 + i32.const 1 + i32.add + local.set $3 + end + local.get $4 + i32.const 65536 + i32.lt_u + if + local.get $1 + local.get $4 + i32.store16 + else + local.get $1 + local.get $4 + i32.const 65536 + i32.sub + local.tee $4 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $4 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + end + else + local.get $2 + local.get $6 + i32.eqz + i32.and + br_if $while-break|0 + local.get $1 + local.get $6 + i32.store16 + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end end - local.get $3 - i32.const 2 - i32.and - if + block $__inlined_func$~lib/rt/itcms/__renew$157 local.get $1 - i32.const 4 + local.get $0 i32.sub + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.const -4 i32.and - i32.eqz + i32.const 16 + i32.sub + i32.le_u if - i32.const 0 - i32.const 1488 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $2 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew$157 end + local.get $2 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add + local.get $2 local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $2 + i32.gt_u + select + memory.copy + local.get $1 + local.set $0 end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $2 - i32.add - i32.ne + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String.UTF8.encode@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 + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 234 - i32.const 14 + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if + block $2of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $2of2 $2of2 $outOfRange + end + unreachable + end i32.const 0 - i32.const 1488 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.set $1 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 + call $~lib/string/String.UTF8.encode + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add - local.get $1 - i32.store offset=96 - local.get $0 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF8.decode (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 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + 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 - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 local.get $1 - i64.extend_i32_u - i64.lt_u + call $~lib/string/String.UTF8.decodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.decodeUnsafe (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 22804 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 382 - i32.const 14 + i32.const 55600 + i32.const 55648 + 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 $1 - i32.const 19 - i32.add - i32.const -16 + i32.const -2 i32.and + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - local.set $1 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $4 + local.get $1 + i32.const 0 + i32.ne + local.set $2 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u if - i32.const 0 - i32.const 1488 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + local.get $0 + i32.const 2 + i32.add + local.get $4 + i32.lt_u + i32.and + 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 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz if return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.get $~lib/rt/itcms/white local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.const 20 + i32.sub local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - unreachable - end - i32.const 55584 - i32.const 0 - i32.store - i32.const 57152 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 2 - i32.shl - i32.const 55584 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$158 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if local.get $1 - i32.const 16 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 55572 i32.lt_u + i32.and + i32.eqz if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 55584 - i32.add i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$158 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 55584 - i32.const 57156 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 55584 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 55572 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.or + i32.store offset=4 end - global.get $~lib/rt/itcms/iter - local.tee $0 global.get $~lib/rt/itcms/toSpace - i32.ne - if + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne + i32.const 22784 + i32.load + i32.gt_u if - i32.const 0 - i32.const 1216 - i32.const 229 - i32.const 20 + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 55572 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 55572 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1488 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub + i32.const 2 i32.shl + i32.const 22788 i32.add - i32.const 1 - i32.sub - local.set $1 + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 local.get $0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else local.get $0 - i32.load - i32.const -1 + 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/visitCount i32.const 1 i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (local $7 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 22804 + i32.lt_s if - i32.const 1152 - i32.const 1216 - i32.const 261 - i32.const 31 + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 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$70 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $5 + local.set $4 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + i32.add + local.set $6 + block $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 + loop $while-continue|0 + local.get $0 + local.get $6 + i32.lt_u + if + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u if - global.get $~lib/rt/itcms/total + local.get $4 + local.get $3 + i32.store8 + local.get $4 i32.const 1 - i32.shl - i32.const 1024 i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total + local.set $4 + local.get $1 + local.get $3 + i32.eqz + i32.and + br_if $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $4 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $4 + i32.const 2 + i32.add + else + local.get $3 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + if + local.get $3 + i32.const 56320 + i32.lt_u + local.get $0 + i32.const 2 + i32.add + local.get $6 + i32.lt_u + i32.and + if + local.get $0 + i32.load16_u offset=2 + local.tee $7 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $4 + local.get $3 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $7 + i32.const 1023 + i32.and + i32.or + local.tee $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $3 + 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 $3 + 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 $3 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $2 + if + local.get $2 + i32.const 2 + i32.eq + if + i32.const 1712 + i32.const 1776 + i32.const 742 + i32.const 49 + call $~lib/builtins/abort + unreachable + end + i32.const 65533 + local.set $3 + end + end + local.get $4 + local.get $3 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $4 + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $4 + i32.const 3 + i32.add + end + local.set $4 + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + if + local.get $4 + i32.const 0 + i32.store8 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + 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$70 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.sub @@ -1560,1272 +1402,1464 @@ memory.fill local.get $1 ) - (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) + (local $1 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 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.add - local.set $4 - local.get $1 - i32.const 0 - i32.ne - local.set $2 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - block $while-break|0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if (result i32) + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - local.get $3 - i32.eqz + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 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) + i32.ne + if + local.get $0 local.get $2 - i32.const 2 - i32.add - else - local.get $3 - i32.const 64512 + i32.const -4 i32.and - i32.const 55296 - i32.eq + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount local.get $0 - i32.const 2 + i32.const 20 i32.add - local.get $4 - i32.lt_u + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 55572 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 i32.and + i32.ne if local.get $0 - i32.load16_u offset=2 - i32.const 64512 + local.get $2 + i32.const -4 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 + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - local.get $2 - i32.const 3 - i32.add + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end end - local.set $2 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter i32.const 2 - i32.add - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - end - local.get $2 - ) - (func $start:std/string-encoding - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - 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 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace i32.ne if - i32.const 0 - i32.const 1088 - i32.const 8 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 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 55572 - i32.sub - i32.const 1 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 55572 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 55572 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 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 + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 + local.tee $4 + i32.const 7 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 + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if - i32.const 0 - i32.const 1088 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 - i32.load8_u offset=10 - i32.const 98 - i32.ne + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 - i32.const 1088 - i32.const 26 - i32.const 3 + i32.const 1488 + i32.const 221 + i32.const 16 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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/string/String.UTF16.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 - 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 16 - 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 22804 - i32.lt_s - br_if $folding-inner1 - 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 - 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 - 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 - 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 - local.get $0 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $6 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 - local.get $0 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 8 + local.get $3 + i32.const -4 + i32.and i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $3 i32.store - local.get $0 - 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 $1 - i32.const 12 - i32.add + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if 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 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/string/String.UTF16.decode (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 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 11 - i32.ne + 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.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + call $~lib/string/String.UTF16.decodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1088 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 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 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1056 + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.store + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.const 20 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 i32.sub - i32.load offset=16 - i32.const 10 - i32.ne + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 55584 + i32.const 0 + i32.store + i32.const 57152 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if + local.get $0 + i32.const 2 + i32.shl + i32.const 55584 + i32.add i32.const 0 - i32.const 1088 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 55584 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $0 - i32.load8_u - i32.const 240 - i32.ne + end + i32.const 55584 + i32.const 57156 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 55584 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u if i32.const 0 - i32.const 1088 - i32.const 64 - i32.const 3 + i32.const 1488 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else local.get $0 - i32.load8_u offset=1 - i32.const 144 - i32.ne + i32.const 1572 + i32.add + local.get $1 + i32.gt_u 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 + i32.const 1488 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 1712 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.load8_u offset=9 - i32.const 162 + local.get $1 i32.ne if - i32.const 0 - i32.const 1088 - i32.const 73 + local.get $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF8EncodeNullTerminated - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1904 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 101 + i32.and i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 1904 - i32.const 0 + end + ) + (func $std/string-encoding/testRoundtrip (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1936 - 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 1968 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 106 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1968 + i32.const 1088 + i32.const 153 + i32.const 3 + 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 $0 + call $~lib/string/String.UTF16.encode + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/string/String.UTF16.decode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 + i32.const 1088 + i32.const 155 + 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 $~start + call $start:std/string-encoding + ) + (func $std/string-encoding/testUTF8EncodeNullTerminated + (local $0 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 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 108 - 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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - 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 i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1056 + call $~lib/builtins/abort + unreachable + end + 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 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + 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 11 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $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 - 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 - i32.const 0 - i32.const 1088 - i32.const 114 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + 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 32 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - 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 - i32.const 0 - i32.const 1088 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.store - i32.const 2000 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.store - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=20 - 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 4 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2048 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 2048 - i32.store - i32.const 2048 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - 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 2048 - i32.store offset=8 - local.get $0 - i32.const 2048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 127 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.store - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 1088 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 144 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - 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 2048 - i32.store offset=8 - local.get $0 - i32.const 2048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 2112 - call $std/string-encoding/testRoundtrip - i32.const 15232 - call $std/string-encoding/testRoundtrip - global.get $~lib/rt/itcms/state + 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.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 - return + i32.const 1088 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + 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 - unreachable - ) - (func $~start - call $start:std/string-encoding - ) - (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) - (local $1 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 22804 - i32.lt_s + local.get $0 + i32.load8_u offset=5 + i32.const 105 + i32.ne if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 + 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 - i64.const 0 - i64.store + i32.const 1824 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1824 i32.store + i32.const 2 + global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 1824 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const -2 - i32.and - memory.copy + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1824 + i32.store + i32.const 1824 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 94 + 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 - local.get $1 ) - (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) + (func $std/string-encoding/testUTF8DecodeUnsafe + (local $0 i32) + (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2840,1356 +2874,1322 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1056 i32.store - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - call $~lib/string/String.UTF16.decodeUnsafe + i32.const 2 + global.set $~argumentsLength 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 $3 i32) - (local $4 i32) - (local $5 i32) + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + local.set $2 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s + local.get $1 + i32.store + local.get $1 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1088 + i32.const 138 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store local.get $0 + local.get $2 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.eq + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $1 + i32.const 1056 + 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 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$94 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$94 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + i32.const 0 + i32.const 1088 + i32.const 139 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store + local.get $1 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 140 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 i32.const 0 - ) - (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s + local.get $1 + i32.store + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1088 + i32.const 141 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.const 6 + i32.add + i32.const 4 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 142 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 10 + i32.add + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/string/String.UTF8.byteLength + i32.store + local.get $1 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 143 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.add + i32.const 100 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $5 - local.set $4 - local.get $0 + local.get $1 + i32.const 2080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and + i32.const 6 i32.add - local.set $6 - block $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if - local.get $4 - local.get $3 - i32.store8 - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $1 - local.get $3 - i32.eqz - i32.and - br_if $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 - else - local.get $3 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $4 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $4 - i32.const 2 - i32.add - else - local.get $3 - i32.const 63488 - i32.and - i32.const 55296 - i32.eq - if - local.get $3 - i32.const 56320 - i32.lt_u - local.get $0 - i32.const 2 - i32.add - local.get $6 - i32.lt_u - i32.and - if - local.get $0 - i32.load16_u offset=2 - local.tee $7 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $4 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $7 - i32.const 1023 - i32.and - i32.or - local.tee $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $3 - 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 $3 - 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 $3 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $2 - if - local.get $2 - i32.const 2 - i32.eq - if - i32.const 1712 - i32.const 1776 - i32.const 742 - i32.const 49 - call $~lib/builtins/abort - unreachable - end - i32.const 65533 - local.set $3 - end - end - local.get $4 - local.get $3 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $4 - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $4 - i32.const 3 - i32.add - end - local.set $4 - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $1 - if - local.get $4 - i32.const 0 - i32.store8 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $~lib/string/String.UTF8.encode@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 + i32.const 100 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s + local.get $1 + i32.store + local.get $1 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1088 + i32.const 146 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $2of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end + local.get $0 + i32.const 10 + i32.add + i32.const 100 + 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 - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.encode + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 147 + i32.const 3 + 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 ) - (func $std/string-encoding/testUTF8EncodeNullTerminated + (func $start:std/string-encoding (local $0 i32) + (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + 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 55572 + 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 22804 + i32.lt_s + br_if $folding-inner1 + 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 + 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 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 - call $~lib/builtins/abort - unreachable - end - 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 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - 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 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 1824 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1824 - i32.store - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1824 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 1824 - i32.store - i32.const 1824 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 94 - 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 $~lib/string/String.UTF8.decode (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 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 - 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.store - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.get $1 - call $~lib/string/String.UTF8.decodeUnsafe - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/string-encoding/testUTF8DecodeUnsafe - (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 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.byteLength - local.set $2 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - local.get $1 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if + 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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/string/String.UTF16.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 + 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 16 + 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 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1088 - i32.const 139 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 1584 - call $~lib/string/String.__eq - i32.eqz - if + 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 - i32.const 1088 - i32.const 140 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 2 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + 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 + 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 + local.get $0 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 $1 + i32.const 12 + i32.add i32.const 0 - i32.const 1088 - i32.const 141 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.add - i32.const 4 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 22804 + i32.lt_s + br_if $folding-inner1 + 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 + 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 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 i32.const 0 - i32.const 1088 - i32.const 142 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 10 - i32.add - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + 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 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 + call $std/string-encoding/testUTF8EncodeNullTerminated + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 i32.const 0 - i32.const 1088 - i32.const 143 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 100 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 2080 - call $~lib/string/String.__eq - i32.eqz - if i32.const 0 - i32.const 1088 - i32.const 145 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.add - i32.const 100 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 0 - i32.const 1088 - i32.const 146 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 10 - i32.add - i32.const 100 - 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 1552 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1904 i32.const 0 - i32.const 1088 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/string-encoding/testRoundtrip (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 0 - i32.const 1088 - i32.const 153 - i32.const 3 - 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 $0 - call $~lib/string/String.UTF16.encode - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - call $~lib/string/String.UTF16.decode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1936 + 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 1968 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1968 i32.const 0 - i32.const 1088 - i32.const 155 - 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/string/String.UTF16.decodeUnsafe (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 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 - 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 $1 - i32.const -2 - i32.and - local.tee $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/string/String.UTF8.decodeUnsafe (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 - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 i32.const 1 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 108 + 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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + 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 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.tee $3 - local.get $1 - i32.add - local.set $5 - local.get $3 - local.get $5 - i32.gt_u - if + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 i32.const 0 - i32.const 1776 - i32.const 770 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.set $1 - loop $while-continue|0 - local.get $3 - local.get $5 - i32.lt_u + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + 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 if - block $while-break|0 - local.get $3 - i32.load8_u - local.set $6 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $6 - i32.const 128 - i32.and - if - local.get $3 - local.get $5 - i32.eq - br_if $while-break|0 - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.set $7 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $6 - i32.const 224 - i32.and - i32.const 192 - i32.eq - if - local.get $1 - local.get $6 - i32.const 31 - i32.and - i32.const 6 - i32.shl - local.get $7 - i32.or - i32.store16 - else - local.get $3 - local.get $5 - i32.eq - br_if $while-break|0 - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.set $4 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $6 - i32.const 240 - i32.and - i32.const 224 - i32.eq - if - local.get $6 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $7 - i32.const 6 - i32.shl - i32.or - local.get $4 - i32.or - local.set $4 - else - local.get $3 - local.get $5 - i32.eq - br_if $while-break|0 - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $7 - i32.const 12 - i32.shl - i32.or - local.get $4 - i32.const 6 - i32.shl - i32.or - i32.or - local.set $4 - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - local.get $4 - i32.const 65536 - i32.lt_u - if - local.get $1 - local.get $4 - i32.store16 - else - local.get $1 - local.get $4 - i32.const 65536 - i32.sub - local.tee $4 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $4 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - end - else - local.get $2 - local.get $6 - i32.eqz - i32.and - br_if $while-break|0 - local.get $1 - local.get $6 - i32.store16 - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 - end + i32.const 0 + i32.const 1088 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/rt/itcms/__renew$157 - local.get $1 - local.get $0 + 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 32 i32.sub - local.tee $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + 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 + i32.const 0 + i32.const 1088 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + i32.const 2000 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u + i32.load offset=16 + i32.const 4 + i32.ne if - local.get $3 - local.get $2 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew$157 + i32.const 0 + i32.const 1088 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store + i32.const 2048 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - local.get $3 - i32.load offset=16 + i32.store offset=12 + 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 2048 + i32.store offset=8 + local.get $0 + i32.const 2048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.gt_u - select - memory.copy - local.get $1 + i32.store offset=12 + 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 2048 + i32.store offset=8 + local.get $0 + i32.const 2048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF8DecodeUnsafe + i32.const 2112 + call $std/string-encoding/testRoundtrip + i32.const 15232 + call $std/string-encoding/testRoundtrip + 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 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/std/string-nonnull.release.wat b/tests/compiler/std/string-nonnull.release.wat index 63edc700be..b26fd35230 100644 --- a/tests/compiler/std/string-nonnull.release.wat +++ b/tests/compiler/std/string-nonnull.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) (memory $0 1) @@ -9,6 +9,64 @@ (data $0.1 (i32.const 1048) "\02") (export "memory" (memory $0)) (start $~start) + (func $~lib/string/String.__eq + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__ne (result i32) + (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 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 0 + i32.store offset=4 + call $~lib/string/String.__eq + i32.const 0 + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~start (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -60,28 +118,22 @@ i32.const 1056 i32.store offset=4 call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1052 - i32.load - drop - end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1052 - i32.load - drop - end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 @@ -130,62 +182,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/string/String.__eq (result 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 1068 - i32.lt_s - if - i32.const 33856 - i32.const 33904 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/string/String.__ne (result i32) - (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 1068 - i32.lt_s - if - i32.const 33856 - i32.const 33904 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 0 - i32.store offset=4 - call $~lib/string/String.__eq - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/std/string.release.wat b/tests/compiler/std/string.release.wat index c1a818c52a..ed9cf71122 100644 --- a/tests/compiler/std/string.release.wat +++ b/tests/compiler/std/string.release.wat @@ -2,25 +2,25 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func (param i32 i32 i32) (result i32))) (type $2 (func (param i32) (result i32))) - (type $3 (func)) - (type $4 (func (param i32 i32))) + (type $3 (func (param i32 i32))) + (type $4 (func)) (type $5 (func (param i32))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32))) - (type $8 (func (param i32 i32) (result f64))) - (type $9 (func (param i32) (result f64))) - (type $10 (func (param i64 i32) (result i32))) + (type $7 (func (param i32) (result f64))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i32) (result f64))) + (type $10 (func (param i32 i32 i32))) (type $11 (func (param i32 i32 i32 i32))) - (type $12 (func (param i32 i32 i32 i32) (result i32))) - (type $13 (func (param i32 i32 i64))) - (type $14 (func (param f64 i32) (result f64))) - (type $15 (func (param i32 i64 i32 i32))) - (type $16 (func (param i32 i64 i32))) - (type $17 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $18 (func (param f64 i32) (result i32))) - (type $19 (func (result i64))) - (type $20 (func (param f64) (result i32))) - (type $21 (func (param f32) (result i32))) + (type $12 (func (param f64) (result i32))) + (type $13 (func (param i32 i32 i32 i32) (result i32))) + (type $14 (func (param i32 i64 i32 i32))) + (type $15 (func (param f32) (result i32))) + (type $16 (func (param f64 i32) (result i32))) + (type $17 (func (result i64))) + (type $18 (func (param i32 i64 i32))) + (type $19 (func (param i32 i32 i64))) + (type $20 (func (param f64 i32) (result f64))) + (type $21 (func (param i64 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)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -984,1333 +984,854 @@ (export "getString" (func $std/string/getString)) (export "memory" (memory $0)) (start $~start) - (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 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $1 - local.get $3 - i32.const 4 - i32.ge_u - if (result i32) - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.or - else + (func $~lib/string/String.__eq (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 + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.eqz + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - loop $do-loop|0 - local.get $1 - i64.load - local.get $2 - i64.load - i64.eq - if - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.tee $3 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - loop $while-continue|1 - local.get $3 - local.tee $0 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 i32.sub - local.set $3 + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - if - local.get $1 - i32.load16_u - local.tee $0 - local.get $2 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $0 - local.get $4 - i32.sub - return - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + 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 0 ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $std/string/str - local.tee $0 + (func $~lib/number/F64.parseFloat (param $0 i32) (result f64) + (local $1 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1264 - call $~lib/rt/itcms/__visit - i32.const 14064 - call $~lib/rt/itcms/__visit - i32.const 15712 - call $~lib/rt/itcms/__visit - i32.const 1376 - call $~lib/rt/itcms/__visit - i32.const 16640 - call $~lib/rt/itcms/__visit - i32.const 17696 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end + i32.const 59424 + i32.const 59472 + 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.store + local.get $0 + call $~lib/util/string/strtod + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) + (local $2 i64) (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + (local $4 i64) + (local $5 i64) + (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 26636 + i32.lt_s if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$287 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 59404 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$287 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + i32.const 59424 + i32.const 59472 i32.const 1 - else - local.get $1 - i32.const 26608 - i32.load - i32.gt_u - if - i32.const 1264 - i32.const 1568 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 26612 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 - local.get $0 + i32.const 2 + i32.lt_s local.get $1 - i32.load offset=4 - i32.const 3 - i32.and + i32.const 36 + i32.gt_s 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 - 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 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz if - i32.const 0 - i32.const 1648 - i32.const 268 - i32.const 14 + i32.const 16048 + i32.const 16176 + i32.const 401 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + local.get $0 + i64.eqz if - i32.const 0 - i32.const 1648 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3392 + return end local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 + i32.const 10 + i32.eq if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + local.get $0 + i64.const 4294967295 + i64.le_u if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add + i32.wrap_i64 local.tee $1 - i32.load offset=4 - i32.const -2 + 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 $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store local.get $3 - i32.rotl - i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if + local.get $6 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + 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 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $0 + local.get $1 + call $~lib/util/number/utoa64_dec_lut end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if + else local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz + i32.const 16 + i32.eq if - i32.const 0 - i32.const 1648 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + 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 16640 + 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 + i32.const 1 + i32.and + if + local.get $3 + local.get $0 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$180 (result i32) + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $0 + 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$180 + end + local.get $1 + i64.extend_i32_s + local.tee $5 + local.set $4 + i32.const 1 + local.set $3 + loop $while-continue|01 + 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|01 + end + end + loop $while-continue|1 + local.get $2 + i64.const 0 + i64.ne + if + local.get $2 + local.get $5 + 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 $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $0 + local.get $6 + local.get $1 + call $~lib/util/number/utoa64_any_core + end end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + ) + (func $~lib/util/number/dtoa (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 + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - i32.const 0 - i32.const 1648 - i32.const 233 - i32.const 14 + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 23280 + local.set $1 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + i32.const 7696 + local.set $1 + local.get $0 + local.get $0 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 8960 + i32.const 23312 + local.get $0 + f64.const 0 + f64.lt + select + local.set $1 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 23344 + local.get $2 + memory.copy + end + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $2 - i32.add - i32.ne + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (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 26636 + i32.lt_s if - i32.const 0 - i32.const 1648 - i32.const 234 - i32.const 14 + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add i32.const 2 - i32.shl - i32.add + i32.lt_s local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl + i32.const 36 + i32.gt_s i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u if - i32.const 0 - i32.const 1648 - i32.const 382 - i32.const 14 + i32.const 16048 + i32.const 16176 + i32.const 350 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.eqz if - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1648 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1648 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if + global.set $~lib/memory/__stack_pointer + i32.const 3392 return end local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.const 10 + i32.eq if - unreachable - end - i32.const 59408 - i32.const 0 - i32.store - i32.const 60976 - i32.const 0 - i32.store - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 23 + i32.const 100000 i32.lt_u - if + if (result i32) local.get $0 - i32.const 2 - i32.shl - i32.const 59408 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + 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 2 + 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 + else + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 31 + local.get $0 + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $0 + i64.extend_i32_u + local.set $3 + loop $while-continue|0 local.get $1 - i32.const 16 - i32.lt_u + i32.const 2 + i32.ge_u if - local.get $0 - i32.const 4 - i32.shl + local.get $2 local.get $1 - i32.add i32.const 2 + i32.sub + local.tee $1 + i32.const 1 i32.shl - i32.const 59408 i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 + local.get $3 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16640 i32.add - local.set $1 - br $for-loop|1 + i32.load + i32.store + local.get $3 + i64.const 8 + i64.shr_u + local.set $3 + br $while-continue|0 end end - local.get $0 + local.get $1 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 59408 - i32.const 60980 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 59408 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + if + local.get $2 + local.get $3 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + local.get $0 + i64.extend_i32_u + local.set $4 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$175 (result i32) + local.get $1 + i32.popcnt + i32.const 1 + i32.eq if - local.get $0 - global.set $~lib/rt/itcms/iter + i32.const 63 + local.get $4 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base$175 + end + local.get $1 + i64.extend_i32_s + local.tee $5 + local.set $3 + i32.const 1 + local.set $2 + loop $while-continue|01 + local.get $3 + local.get $4 + i64.le_u if - local.get $0 + local.get $4 + local.get $3 + i64.div_u + local.set $4 + local.get $3 + local.get $3 + i64.mul + local.set $3 local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return + i32.const 1 + i32.shl + local.set $2 + br $while-continue|01 end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 59404 - i32.lt_u + loop $while-continue|1 + local.get $4 + i64.const 0 + i64.ne if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 + local.get $4 + local.get $5 + i64.div_u + local.set $4 + local.get $2 + i32.const 1 i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 + local.set $2 + br $while-continue|1 end end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + local.get $2 + i32.const 1 + i32.sub end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz + i64.extend_i32_u + local.get $6 local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 59404 - 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 + call $~lib/util/number/utoa64_any_core + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1376 + i32.const 1440 + i32.const 261 + 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$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 59404 - i32.ge_u + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1648 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + global.get $~lib/rt/itcms/total i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 261 - 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$70 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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.shl + i32.add + global.set $~lib/rt/itcms/threshold end end global.get $~lib/rt/tlsf/ROOT @@ -2570,1810 +2091,1749 @@ memory.fill local.get $1 ) - (func $~lib/string/String.fromCharCode@varargs (param $0 i32) (result i32) - (local $1 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const -1 - local.set $1 + (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + 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.store local.get $0 local.get $1 - call $~lib/string/String.fromCharCode + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (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 + (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.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - i32.const 0 - i32.const 1440 - i32.const 295 - i32.const 14 + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 20 - i32.sub - local.tee $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1264 + i32.const 15664 + i32.const 114 + i32.const 42 + 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 $0 i32.load offset=4 - i32.const 3 - i32.and - i32.eq + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz 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 - 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 - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end + i32.const 15712 + i32.const 15664 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/math/ipow32 (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 5 - local.set $1 - i32.const 1 - local.set $2 + (local $3 i64) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + 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 2 + i32.lt_s + local.get $1 + i32.const 36 + i32.gt_s + i32.or + if + i32.const 16048 + i32.const 16176 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end 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 3392 + return + end i32.const 0 - i32.le_s + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + select + local.set $2 + local.get $1 + i32.const 10 + i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $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.tee $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - i32.eqz - return + local.get $4 + i32.add + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut else - local.get $0 - i32.const 1 + local.get $1 + i32.const 16 i32.eq if - i32.const 5 - return - else - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 31 + local.get $2 + i32.clz + i32.sub i32.const 2 - i32.eq - if - i32.const 25 - return - else - local.get $0 - i32.const 32 - i32.lt_s + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $4 + i32.add + local.set $7 + local.get $2 + i64.extend_i32_u + local.set $3 + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u 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 $7 + 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 16640 + 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 + i32.const 1 + i32.and + if + local.get $7 + local.get $3 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + local.get $2 + i64.extend_i32_u + local.set $5 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$171 (result i32) + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $5 + 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$171 + end + local.get $1 + i64.extend_i32_s + local.tee $6 + local.set $3 + i32.const 1 + local.set $0 + loop $while-continue|01 + local.get $3 + local.get $5 + i64.le_u + if + local.get $5 + local.get $3 + i64.div_u + local.set $5 + local.get $3 + local.get $3 + i64.mul + local.set $3 local.get $0 i32.const 1 - i32.and - select - local.set $2 + i32.shl + local.set $0 + br $while-continue|01 + end + end + loop $while-continue|1 + local.get $5 + i64.const 0 + i64.ne + if + local.get $5 + local.get $6 + i64.div_u + local.set $5 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|1 end - local.get $2 - return end + local.get $0 + i32.const 1 + i32.sub end - end - end - loop $while-continue|1 - local.get $0 - if - local.get $1 - local.get $2 - i32.mul - local.get $2 - local.get $0 + local.tee $7 i32.const 1 - i32.and - select - local.set $2 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - i32.const 1 - i32.shr_u - local.set $0 - local.get $1 + local.get $4 + i32.add + local.get $2 + i64.extend_i32_u + local.get $7 local.get $1 - i32.mul - local.set $1 - br $while-continue|1 + call $~lib/util/number/utoa64_any_core end end - local.get $2 - ) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - local.get $1 - i32.const 1023 - i32.gt_s - if (result f64) + local.get $4 + if local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $0 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - i32.gt_s - if (result f64) - i32.const 1023 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - local.get $1 - i32.const 1023 - i32.ge_s - select - local.set $1 - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - local.set $0 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - i32.lt_s - if (result f64) - i32.const -1022 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - local.get $1 - i32.const -1022 - i32.le_s - select - local.set $1 - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - else - local.get $0 - end - else - local.get $0 - end + i32.const 45 + i32.store16 end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/string/String#replaceAll (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $1 - local.get $0 + (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 - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=16 - local.get $0 - return + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $0 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.gt_u - select - memory.copy - local.get $2 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 + i32.store + block $folding-inner1 local.get $1 - i32.const 10000 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $8 + local.get $3 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 16220 - i32.add - i64.load32_u local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + local.get $8 + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 + end + br $folding-inner1 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 16220 - 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 + global.get $~lib/memory/__stack_pointer 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 16220 - i32.add - i32.load i32.store - else - local.get $0 local.get $2 - i32.const 1 + i32.const 20 i32.sub + i32.load offset=16 i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - local.get $3 - i64.extend_i32_s - local.set $5 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - if - loop $do-loop|1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $1 - local.get $5 - i64.div_u - local.tee $1 - local.get $5 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.const 17696 - i32.add - i32.load16_u - i32.store16 - local.get $1 - i64.const 0 - i64.ne - br_if $do-loop|1 - end - else - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s + i32.shr_u local.set $4 - local.get $5 - i64.const 1 - i64.sub - local.set $5 - loop $do-loop|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 - local.get $5 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.const 17696 - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $4 - i64.shr_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-loop|0 - end - 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 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 16220 - i32.add - i64.load32_u + block $folding-inner0 + local.get $8 + i32.eqz + if + local.get $4 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=8 + local.get $11 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.set $1 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_u + if + local.get $11 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $11 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + br $folding-inner0 + end local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 16220 - 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 16220 - i32.add - i64.load32_u + local.get $8 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=12 + local.get $11 + local.get $0 + local.get $3 + memory.copy + loop $while-continue|1 + 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 + local.get $10 + call $~lib/string/String#indexOf + local.tee $3 + i32.const -1 + i32.xor + if + local.get $11 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $3 + local.get $8 + i32.add + local.set $10 + br $while-continue|1 + end + end + br $folding-inner0 + end local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + local.set $5 + loop $while-continue|2 + 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 + local.get $10 + call $~lib/string/String#indexOf + local.tee $7 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String.__not + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=16 + end + local.get $7 + local.get $10 + i32.sub + local.tee $6 + local.get $9 + i32.add + local.get $4 + i32.add + local.get $5 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=16 + end + local.get $11 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 1 + i32.shl + memory.copy + local.get $11 + local.get $6 + local.get $9 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $6 + i32.add + local.set $9 + local.get $7 + local.get $8 + i32.add + local.set $10 + br $while-continue|2 + end + end + local.get $11 + if + local.get $3 + local.get $10 + i32.sub + local.tee $1 + local.get $9 + i32.add + local.get $5 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=16 + end + local.get $1 + if + local.get $11 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 1 + i32.shl + memory.copy + end + local.get $1 + local.get $9 + i32.add + local.tee $0 + local.get $5 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $0 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=16 + end + br $folding-inner0 + end + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer 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 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $10 - i64.const 1 + (func $~lib/array/Array#get:length (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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $11 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $7 - i64.const 1 - i64.sub - local.tee $12 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + 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 - i64.and - local.set $9 + i32.const 2 + i32.lt_s local.get $1 + i32.const 36 + i32.gt_s + i32.or + if + i32.const 16048 + i32.const 16176 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end 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 3392 + 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 $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u + i32.const 1 + i32.shl + local.tee $4 + select + local.set $0 + local.get $1 + i32.const 10 + i32.eq + if + local.get $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + 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 $7 i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 i32.add + local.get $1 + local.get $7 + call $~lib/util/number/utoa32_dec_lut else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $4 i32.add - local.get $5 - i32.const 1000 - i32.ge_u + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 i32.add + local.get $0 + local.get $1 + call $~lib/util/number/utoa64_dec_lut end else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 + local.tee $1 + i32.const 1 + i32.shl + local.get $4 i32.add - local.get $5 - i32.const 100000000 - i32.ge_u + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 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 $5 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $6 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $6 - i32.const 0 - local.set $5 - br $break|1 + local.set $7 + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u + if + local.get $7 + 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 16640 + i32.add + i32.load + i32.store + local.get $0 + i64.const 8 + i64.shr_u + local.set $0 + br $while-continue|0 end - i32.const 0 - local.set $6 end - local.get $4 - local.get $6 - i32.or + local.get $1 + i32.const 1 + i32.and if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 + local.get $7 + local.get $0 + i32.wrap_i64 + i32.const 6 i32.shl - i32.const 23344 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 + i32.const 16640 i32.add + i32.load16_u i32.store16 end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $9 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 24272 - i32.add - i64.load32_u + else + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$185 (result i32) local.get $1 - i64.shl - local.set $7 - local.get $4 + i32.popcnt i32.const 1 - i32.shl - i32.const 23342 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|3 - local.get $0 - local.get $10 - i64.lt_u - local.get $3 + i32.eq + if + i32.const 63 local.get $0 - i64.sub - local.get $7 + 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$185 + end + local.get $1 + i64.extend_i32_s + local.tee $6 + local.set $5 + i32.const 1 + local.set $3 + loop $while-continue|01 + local.get $2 + local.get $5 i64.ge_u - i32.and - if (result i32) - local.get $10 - local.get $0 - local.get $7 - i64.add - local.tee $1 - i64.gt_u - local.get $10 - local.get $0 - i64.sub - local.get $1 - local.get $10 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 + if + local.get $2 + local.get $5 + i64.div_u + local.set $2 + local.get $5 + local.get $5 + i64.mul + local.set $5 + local.get $3 + i32.const 1 + i32.shl + local.set $3 + br $while-continue|01 end + end + loop $while-continue|1 + local.get $2 + i64.const 0 + i64.ne if + local.get $2 local.get $6 + i64.div_u + local.set $2 + local.get $3 i32.const 1 - i32.sub - local.set $6 - local.get $0 - local.get $7 - i64.add - local.set $0 - br $while-continue|3 + i32.add + local.set $3 + br $while-continue|1 end end - local.get $2 - local.get $6 - i32.store16 - local.get $4 - return + local.get $3 + i32.const 1 + i32.sub end - br $while-continue|0 + local.tee $7 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.add + local.get $0 + local.get $7 + local.get $1 + call $~lib/util/number/utoa64_any_core end end - loop $while-continue|4 + local.get $4 + if local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $9 - i64.const 10 - i64.mul - local.tee $1 - local.get $11 - i64.extend_i32_s - i64.shr_u - local.tee $0 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 23344 - i32.add - local.get $0 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $1 - local.get $12 - i64.and - local.tee $9 - local.get $3 - i64.ge_u - br_if $while-continue|4 + i32.const 45 + i32.store16 end - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $10 - i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 24272 - i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 23342 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|6 - local.get $1 - local.get $9 - i64.gt_u - local.get $3 - local.get $9 - i64.sub - local.get $7 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $7 - local.get $9 - i64.add - local.tee $0 - i64.gt_u - local.get $1 - local.get $9 - i64.sub - local.get $0 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $7 - local.get $9 - i64.add - local.set $9 - br $while-continue|6 - end - end - local.get $2 - local.get $6 - i32.store16 - local.get $4 + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - local.get $0 - local.get $1 + i32.const 59424 + i32.const 59472 i32.const 1 - i32.shl + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + 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 + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 return end - local.get $1 local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.set $2 + local.get $4 local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.le_s + if + 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 $2 local.get $1 local.get $3 - i32.lt_s + call $~lib/util/string/compareImpl + i32.eqz 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + local.get $2 + return 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 - local.get $3 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $0 - local.get $3 + local.get $2 i32.const 1 - i32.shl i32.add - local.tee $0 + local.set $2 + 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 + ) + (func $~lib/string/String#localeCompare (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 + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + 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 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + 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 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + 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 + i32.const 0 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.tee $0 + local.get $2 + local.get $3 + i32.sub + local.get $0 + select + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.gt_s + local.get $0 + i32.const 0 + i32.lt_s + i32.sub + ) + (func $~lib/string/String#replace (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.le_u + if + local.get $3 + local.get $4 + i32.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + 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 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/string/String#indexOf + local.tee $1 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + local.get $4 + local.get $3 + i32.sub + local.tee $6 + i32.add + local.tee $4 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl i32.const 2 - i32.add + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + local.get $4 local.get $0 - i32.const 0 + local.get $1 + i32.const 1 + i32.shl + local.tee $7 + memory.copy + local.get $4 + local.get $7 + i32.add local.get $2 - i32.sub + local.get $5 i32.const 1 i32.shl memory.copy - local.get $0 - i32.const 46 - i32.store16 + local.get $4 local.get $1 + local.get $5 + i32.add i32.const 1 + i32.shl i32.add - else - local.get $3 - i32.const 0 - i32.le_s + local.get $0 + local.get $1 local.get $3 - i32.const -6 - i32.gt_s - i32.and - 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 - 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 - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - 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 - 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 - 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 $3 - select - i32.store16 - 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 - 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 - i32.const 4 - i32.add - local.tee $4 - 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 - 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 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $1 - i32.const 2 - i32.add - end + i32.add + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $1 + i32.sub + i32.const 1 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/number/dtoa_core (param $0 f64) (param $1 i32) (result i32) - (local $2 i64) + (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $3 - if - i32.const 23344 - i32.const 45 - i32.store16 - local.get $0 - f64.neg - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - if (result i32) + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 local.get $0 - f32.demote_f64 - i32.reinterpret_f32 - local.tee $5 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $9 - local.get $5 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $9 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - local.set $2 - local.get $9 + local.get $1 + i32.eq + br_if $folding-inner0 + 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 - local.get $9 - select - i32.const 150 + i32.shr_u + local.tee $2 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 i32.sub - else + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 local.get $2 - i64.const 4503599627370495 - i64.and - local.get $5 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - local.set $2 - local.get $5 - i32.const 1 - local.get $5 + i32.gt_s + local.get $2 + local.get $3 + i32.gt_s + local.get $0 select - i32.const 1075 - i32.sub + return end - local.tee $9 - i32.const 1 - i32.sub - local.get $2 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $4 - i64.clz - i32.wrap_i64 - local.tee $10 - i32.sub - local.set $5 - local.get $4 - local.get $10 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $2 - local.get $2 - i64.const 8388608 - i64.const 4503599627370496 - local.get $1 - select - i64.eq - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $1 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $9 - local.get $1 - i32.sub - local.get $5 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $5 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_sat_f64_s - local.tee $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - f64.convert_i32_s + i32.store offset=4 local.get $0 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $1 + global.set $~lib/memory/__stack_pointer + ) + (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.shl - local.tee $5 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/string/String#split@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/util/number/_K - local.get $5 - i32.const 23400 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.const 24096 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $2 - local.get $2 - i64.clz - i64.shl - local.tee $2 - i64.const 4294967295 - i64.and - local.set $6 - global.get $~lib/util/number/_frc_pow - local.tee $11 - i64.const 4294967295 - i64.and - local.tee $12 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $6 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $7 - global.get $~lib/util/number/_frc_plus - local.tee $4 - i64.const 4294967295 - i64.and - local.set $13 - local.get $4 - i64.const 32 - i64.shr_u - local.tee $4 - local.get $12 - i64.mul - local.get $12 - local.get $13 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $8 - global.get $~lib/util/number/_frc_minus - local.tee $14 - i64.const 4294967295 - i64.and - local.set $15 - local.get $14 - i64.const 32 - i64.shr_u - local.tee $14 - local.get $12 - i64.mul - local.get $12 - local.get $15 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 - local.get $3 - i32.const 1 - i32.shl - i32.const 23344 - i32.add - local.get $2 - local.get $11 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - 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 - local.get $2 - local.get $4 - i64.mul - local.get $8 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $13 - i64.mul - local.get $8 - 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 $4 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $4 - local.get $2 - local.get $14 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add local.get $2 - local.get $15 - i64.mul - local.get $12 - 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 $3 - call $~lib/util/number/genDigits - local.get $3 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $3 + call $~lib/string/String#split + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/string/getString (result i32) - global.get $std/string/str - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__lt (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - 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 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - 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 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $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 - br $folding-inner1 - end - unreachable - end - i32.const 59424 - i32.const 59472 - 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 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - call $start:std/string - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4392,46 +3852,42 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end block $folding-inner0 - local.get $1 - i32.eqz local.get $0 - i32.eqz - i32.or + local.get $1 + i32.eq br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $2 + local.tee $2 + i32.eqz + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $2 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - i32.ne - br_if $folding-inner0 + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4441,13 +3897,25 @@ local.get $0 i32.const 0 local.get $1 + local.get $3 + local.get $2 local.get $2 + local.get $3 + i32.gt_s + local.tee $0 + select call $~lib/util/string/compareImpl - i32.eqz + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.lt_s + local.get $0 + local.get $1 + select return end global.get $~lib/memory/__stack_pointer @@ -4456,10 +3924,12 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $~lib/string/String#at (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (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.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4474,184 +3944,191 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 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.set $4 local.get $1 i32.const 0 i32.lt_s - select - i32.add - local.tee $1 - local.get $2 - i32.ge_u + if (result i32) + i32.const 1 + else + local.get $4 + i64.extend_i32_s + local.get $1 + i64.extend_i32_s + i64.mul + i64.const 268435456 + i64.gt_u + end if - i32.const 1264 + i32.const 14064 i32.const 1328 - i32.const 57 - i32.const 31 + i32.const 334 + i32.const 7 call $~lib/builtins/abort unreachable end - i32.const 2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 + local.get $4 + i32.eqz local.get $1 - i32.const 1 - i32.shl - 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.get $2 - ) - (func $~lib/string/String#charAt (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 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + i32.eqz + i32.or if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - i32.ge_u + i32.eq if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + local.get $0 return end global.get $~lib/memory/__stack_pointer - i32.const 2 + local.get $1 + local.get $4 + i32.mul + i32.const 1 + i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 - local.get $0 - local.get $1 + local.get $4 i32.const 1 i32.shl - i32.add - i32.load16_u - i32.store16 + local.tee $4 + local.get $1 + i32.mul + local.set $1 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.gt_u + if + local.get $2 + local.get $3 + i32.add + local.get $0 + local.get $4 + memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + br $while-continue|0 + end + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) - (func $~lib/string/String.__not (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer + (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 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $1 + local.get $3 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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.ge_u if (result i32) - 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 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or else - i32.const 0 + i32.const 1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer i32.eqz - ) - (func $~lib/array/Array#get:length (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 26636 - i32.lt_s if - i32.const 59424 - i32.const 59472 - i32.const 1 + loop $do-loop|0 + local.get $1 + i64.load + local.get $2 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $3 + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $3 + local.get $0 + if + local.get $1 + i32.load16_u + local.tee $0 + local.get $2 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $0 + local.get $4 + i32.sub + return + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.fromCharCodes (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/string/String#substring (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 8 i32.sub @@ -4673,58 +4150,102 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 local.get $0 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + local.get $2 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $4 + local.get $3 + local.get $2 + local.get $2 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $2 + local.get $4 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $4 + i32.eqz + local.get $2 local.get $1 i32.const 1 i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $1 local.get $0 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end + local.get $4 + i32.add + local.get $3 + memory.copy global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) - (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substr (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 8 i32.sub @@ -4744,97 +4265,76 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u local.tee $3 - i32.eqz + local.get $1 + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - return + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 + local.get $1 i32.sub - i32.load offset=16 + local.tee $3 + local.get $2 + local.get $3 + i32.lt_s + select i32.const 1 - i32.shr_u - local.tee $4 - i32.eqz + i32.shl + local.tee $2 + i32.const 0 + i32.le_s if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + i32.const 1712 return end + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.set $2 - local.get $4 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.le_s - if - 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 $2 - local.get $1 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + memory.copy global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $3 ) (func $~lib/string/String#padStart (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -5097,11 +4597,12 @@ global.set $~lib/memory/__stack_pointer local.get $6 ) - (func $~lib/string/String#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newArray (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 global.get $~lib/memory/__stack_pointer @@ -5116,112 +4617,56 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.eqz - if - 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 - return - end 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 + i32.const 2 + i32.shl local.tee $4 - i32.eqz + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return + local.get $3 + local.get $2 + local.get $4 + memory.copy end - local.get $2 - i32.const 0 - local.get $2 + local.get $3 + i32.store + i32.const 16 + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $4 + call $~lib/rt/itcms/__link + local.get $1 local.get $3 - i32.sub - local.tee $4 - local.get $2 + i32.store offset=4 + local.get $1 local.get $4 - i32.lt_s - select - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - 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 $2 - local.get $1 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end + 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 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $1 ) - (func $~lib/string/String#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtob (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5236,145 +4681,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#localeCompare (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 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end - 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 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - 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 - i32.const 0 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.tee $0 - local.get $2 - local.get $3 - i32.sub - local.get $0 - select - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.gt_s - local.get $0 - i32.const 0 - i32.lt_s - i32.sub - ) - (func $~lib/string/String#trimStart (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 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -5384,776 +4692,672 @@ i32.load offset=16 i32.const -2 i32.and - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if (result i32) - block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $0 - local.get $1 - i32.add - i32.load16_u - local.tee $3 - i32.const 5760 - i32.lt_u - if - local.get $3 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $3 - i32.const 9 + local.tee $1 + i32.const 8 + i32.gt_u + if (result i32) + loop $while-continue|0 + local.get $1 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$4 (result i32) + local.get $0 + local.get $1 + i32.add + i32.const 2 i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace - end - i32.const 1 - local.get $3 - 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 $3 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8287 - i32.eq - br_if $case6|0 + i32.load16_u + local.tee $3 + i32.const 5760 + i32.lt_u + if local.get $3 - i32.const 12288 + i32.const 128 + i32.or + i32.const 160 i32.eq - br_if $case6|0 local.get $3 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$4 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$4 + drop + block $break|0 + block $case6|0 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$4 + end + i32.const 0 end + else i32.const 0 end - else - i32.const 0 - end - if - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end end - end - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + i32.gt_u + if (result i32) + loop $while-continue|1 + local.get $1 + local.get $2 + i32.gt_u + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$5 (result i32) + local.get $0 + local.get $2 + i32.add + i32.load16_u + local.tee $3 + i32.const 5760 + i32.lt_u + if + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$5 + end + i32.const 1 + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$5 + drop + block $break|00 + block $case6|01 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|01 + br $break|00 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$5 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + local.get $1 + local.get $2 + i32.sub + else + local.get $1 + end + else + local.get $1 end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.eqz + i32.const 8 + i32.ne if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 0 return end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 local.get $0 - local.get $1 - i32.add local.get $2 - memory.copy + i32.add + i64.load + i64.const 28429475166421108 + i64.eq global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) - (func $~lib/string/String#trimEnd (param $0 i32) (result 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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 -2 - i32.and - local.tee $3 - local.set $1 loop $while-continue|0 local.get $1 - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$1 (result i32) - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.sub - i32.load16_u - local.tee $2 - i32.const 5760 - i32.lt_u - if - 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 - br $__inlined_func$~lib/util/string/isSpace$1 - end - 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$1 - 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$1 - end - i32.const 0 - end - else - i32.const 0 - end + i32.const 10000 + i32.ge_u if local.get $1 - i32.const 2 - i32.sub + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u local.set $1 - br $while-continue|0 + 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 16220 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end local.get $1 - i32.eqz + i32.const 100 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end local.get $1 - local.get $3 - i32.eq + i32.const 10 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + else local.get $0 - return + 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 - local.get $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - local.get $0 - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/string/String#trim (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/string/String#split (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) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - local.tee $3 - i32.const 1 - i32.shl - local.set $1 - loop $while-continue|0 - local.get $1 - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$2 (result i32) - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.sub - i32.load16_u - local.tee $4 - i32.const 5760 - i32.lt_u - if - local.get $4 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $4 - i32.const 9 + block $folding-inner4 + block $folding-inner3 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + local.get $2 + i32.eqz + br_if $folding-inner1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + i32.eqz + if + local.get $2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace$2 - end - i32.const 1 - local.get $4 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$2 - drop - block $break|0 - block $case6|0 - local.get $4 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 12288 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$2 - end - i32.const 0 - end - else - i32.const 0 - end - if - local.get $1 - i32.const 2 - i32.sub - local.set $1 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $1 - local.get $2 - i32.gt_u - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$3 (result i32) - local.get $0 - local.get $2 - i32.add - i32.load16_u - local.tee $4 - i32.const 5760 - i32.lt_u - if - local.get $4 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $4 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace$3 - end - i32.const 1 - local.get $4 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$3 - drop - block $break|00 - block $case6|01 - local.get $4 - i32.const 5760 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 8232 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 8233 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 8239 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 8287 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 12288 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 65279 - i32.eq - br_if $case6|01 - br $break|00 - end + i32.load offset=16 i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$3 - end - i32.const 0 - end - else - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.sub - local.set $1 - br $while-continue|1 - end - end - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return - end - local.get $2 - i32.eqz - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.eq - i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $0 - local.get $2 - i32.add - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/util/string/strtob (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 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $1 - i32.const 8 - i32.gt_u - if (result i32) - loop $while-continue|0 - local.get $1 - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$4 (result i32) - local.get $0 + i32.shr_u + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.add - i32.const 2 + i32.store offset=4 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $8 + local.get $1 + i32.const 20 i32.sub - i32.load16_u - local.tee $3 - i32.const 5760 - i32.lt_u - if - local.get $3 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $3 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace$4 - end + i32.load offset=16 i32.const 1 - local.get $3 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$4 - drop - block $break|0 - block $case6|0 - local.get $3 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 12288 - i32.eq - br_if $case6|0 + i32.shr_u + local.tee $4 + if + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + i32.const 1712 + i32.store + br $folding-inner4 + end + else + local.get $6 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $8 + local.get $6 + local.get $8 + i32.lt_s + select + local.tee $3 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 local.get $3 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + local.get $5 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $2 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$4 + br $folding-inner4 end + global.get $~lib/memory/__stack_pointer i32.const 0 - end - else - i32.const 0 - end - if - local.get $1 - i32.const 2 - i32.sub - local.set $1 - br $while-continue|0 - end - end - local.get $1 - i32.const 8 - i32.gt_u - if (result i32) - loop $while-continue|1 - local.get $1 - local.get $2 - i32.gt_u - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$5 (result i32) + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=20 + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.add - i32.load16_u - local.tee $3 - i32.const 5760 - i32.lt_u + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $0 + local.get $1 + local.get $3 + call $~lib/string/String#indexOf + local.tee $9 + i32.const -1 + i32.xor if + local.get $9 local.get $3 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $3 - i32.const 9 i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace$5 - end - i32.const 1 - local.get $3 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$5 - drop - block $break|00 - block $case6|01 - local.get $3 - i32.const 5760 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 8232 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 8233 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 8239 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 8287 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 12288 - i32.eq - br_if $case6|01 + local.tee $7 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.shl + local.tee $10 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=28 + local.get $7 + local.get $0 local.get $3 - i32.const 65279 - i32.eq - br_if $case6|01 - br $break|00 + i32.const 1 + i32.shl + i32.add + local.get $10 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=24 + local.get $2 + local.get $7 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push end + local.get $5 i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$5 - end - i32.const 0 - end - else - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 + i32.add + local.tee $5 + local.get $8 + i32.eq + br_if $folding-inner3 + local.get $4 + local.get $9 + i32.add + local.set $3 + br $while-continue|1 + end + end + local.get $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $2 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner3 + end + local.get $6 + local.get $3 + i32.sub + local.tee $1 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=32 + local.get $4 + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push + end + br $folding-inner4 end + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $2 - i32.sub - else - local.get $1 + i32.const 0 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.set $2 + br $folding-inner4 end - else - local.get $1 - end - i32.const 8 - i32.ne - if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $2 return end - local.get $0 - local.get $2 - i32.add - i64.load - i64.const 28429475166421108 - i64.eq global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -6173,331 +5377,61 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 2 local.get $0 + i32.const 65535 + i32.gt_u + local.tee $2 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 i32.store - block $folding-inner0 + local.get $2 + if local.get $0 - i32.const 20 + i32.const 1114111 + i32.gt_u + if + i32.const 0 + i32.const 1328 + i32.const 39 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.const 65536 i32.sub - i32.load offset=16 - i32.const 1 + local.tee $0 + i32.const 10 i32.shr_u - local.tee $2 - i32.eqz - br_if $folding-inner0 + i32.const 55296 + i32.or local.get $0 - i32.load16_u - local.set $3 - loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$6 (result i32) - local.get $3 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $3 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - local.get $3 - i32.const 5760 - i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$6 - drop - i32.const 1 - local.get $3 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$6 - drop - block $break|0 - block $case6|0 - local.get $3 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 12288 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$6 - end - i32.const 0 - end - if - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $3 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - f64.const 1 - local.set $4 - local.get $3 - i32.const 45 - i32.eq - local.tee $6 - local.get $3 - i32.const 43 - i32.eq + i32.const 1023 + i32.and + i32.const 56320 i32.or - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - br_if $folding-inner0 - f64.const -1 - f64.const 1 - local.get $6 - select - local.set $4 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $3 - end + i32.const 16 + i32.shl + i32.or + i32.store + else local.get $1 - if - local.get $1 - i32.const 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - br_if $folding-inner0 - local.get $1 - i32.const 16 - i32.eq - if - local.get $3 - i32.const 48 - i32.eq - local.get $2 - i32.const 2 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - end - else - local.get $3 - i32.const 48 - i32.eq - local.get $2 - i32.const 2 - i32.gt_s - i32.and - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $0 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $3 - i32.const 98 - i32.ne - if - local.get $3 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $3 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - end - end - local.get $1 - i32.const 10 - local.get $1 - select - local.set $1 - end - local.get $2 - i32.const 1 - i32.sub - local.set $7 - loop $while-continue|2 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - block $while-break|2 - local.get $0 - i32.load16_u - local.tee $6 - i32.const 48 - i32.sub - local.tee $3 - i32.const 10 - i32.ge_u - if - local.get $6 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - if (result i32) - local.get $6 - i32.const 55 - i32.sub - else - local.get $6 - i32.const 87 - i32.sub - local.get $6 - local.get $6 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - end - local.set $3 - end - local.get $1 - local.get $3 - i32.le_u - if - local.get $2 - local.get $7 - i32.eq - br_if $folding-inner0 - br $while-break|2 - end - local.get $5 - local.get $1 - f64.convert_i32_s - f64.mul - local.get $3 - f64.convert_i32_u - f64.add - local.set $5 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - f64.mul - return + local.get $0 + i32.store16 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - f64.const nan:0x8000000000000 + local.get $1 ) - (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) + (func $~lib/string/String.__gte (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -6512,36 +5446,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store 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/util/string/strtol + call $~lib/string/String.__lt + i32.eqz global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/strtod (param $0 i32) (result f64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 f64) - (local $9 i32) - (local $10 f64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i64) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -6556,814 +5480,438 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $folding-inner1 - block $folding-inner0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.eqz - br_if $folding-inner0 - local.get $0 - i32.load16_u - local.set $4 - f64.const 1 - local.set $10 - loop $while-continue|0 - local.get $5 - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$7 (result i32) - local.get $4 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $4 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - local.get $4 - i32.const 5760 - i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$7 - drop - i32.const 1 - local.get $4 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$7 - drop - block $break|0 - block $case6|0 - local.get $4 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 12288 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$7 - end - i32.const 0 - end - else - i32.const 0 - end - if - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|0 - end - end - local.get $5 - i32.eqz - br_if $folding-inner0 - local.get $4 - i32.const 45 - i32.eq - if (result i32) - local.get $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String#concat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#lastIndexOf@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 + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 1 i32.sub - local.tee $5 - i32.eqz - br_if $folding-inner0 - f64.const -1 - local.set $10 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $4 - i32.const 43 - i32.eq - if (result i32) - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $folding-inner0 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $4 - end - end - local.tee $4 - i32.const 73 - i32.eq - local.get $5 - i32.const 8 - i32.ge_s - i32.and - if - local.get $0 - i64.load - i64.const 29555310648492105 - i64.eq - if (result i32) - local.get $0 - i64.load offset=8 - i64.const 34058970405077102 - i64.eq - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - f64.const inf - f64.mul - return - end - br $folding-inner0 - end - local.get $4 - i32.const 46 - i32.ne - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - i32.and - br_if $folding-inner0 - local.get $0 - local.set $3 - loop $while-continue|1 - local.get $4 - i32.const 48 - i32.eq - if - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end + br_table $0of1 $1of1 $outOfRange end - local.get $5 - i32.const 0 - i32.le_s - br_if $folding-inner1 - local.get $4 - i32.const 46 - i32.eq - if - local.get $0 - local.get $3 - i32.eq - local.set $3 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - i32.and - br_if $folding-inner0 - i32.const 1 - local.set $9 - loop $for-loop|2 - local.get $0 - i32.load16_u - local.tee $4 - i32.const 48 - i32.eq - if - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $5 - i32.const 0 - i32.le_s - br_if $folding-inner1 - local.get $3 + unreachable + end + i32.const 2147483647 + local.set $2 + 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 + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#lastIndexOf (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + 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 + return + end + 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 + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $4 + local.get $3 + i32.sub + local.tee $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + 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 $2 + local.get $1 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.eqz - i32.and - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - i32.and - br_if $folding-inner0 + return end - local.get $4 - i32.const 48 + local.get $2 + i32.const 1 i32.sub - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 10 - i32.lt_u - local.tee $11 - local.get $9 - i32.eqz - local.get $4 - i32.const 46 - i32.eq - i32.and - i32.or - if - block $for-break3 - local.get $11 - if - local.get $1 - i32.const 19 - i32.lt_s - if (result i64) - local.get $3 - i64.extend_i32_u - local.get $6 - i64.const 10 - i64.mul - i64.add - else - local.get $6 - local.get $3 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.or - end - local.set $6 - local.get $1 - i32.const 1 - i32.add - local.set $1 - else - local.get $1 - local.set $2 - i32.const 1 - local.set $9 - end - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $for-break3 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.tee $4 - i32.const 48 - i32.sub - local.set $3 - br $for-loop|3 - end - end - end - block $~lib/util/string/scientific|inlined.0 - local.get $6 - i64.eqz - local.get $2 - local.get $1 - local.get $9 - select - i32.const 19 - local.get $1 - local.get $1 - i32.const 19 - i32.gt_s - select - i32.sub - block $~lib/util/string/parseExp|inlined.0 (result i32) - i32.const 1 - local.set $9 - i32.const 0 - local.set $4 - i32.const 0 - local.get $0 - i32.load16_u - i32.const 32 - i32.or - i32.const 101 - i32.ne - br_if $~lib/util/string/parseExp|inlined.0 - drop - i32.const 0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.tee $1 - i32.const 45 - i32.eq - if (result i32) - i32.const 0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - i32.const -1 - local.set $9 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $1 - i32.const 43 - i32.eq - if (result i32) - i32.const 0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $1 - end - end - local.set $3 - loop $while-continue|4 - local.get $3 - i32.const 48 - i32.eq - if - i32.const 0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $3 - br $while-continue|4 - end - end - local.get $3 - i32.const 48 - i32.sub - local.set $3 - loop $for-loop|5 - local.get $3 - i32.const 10 - i32.lt_u - i32.const 0 - local.get $5 - select - if - local.get $9 - i32.const 3200 - i32.mul - local.get $4 - i32.const 3200 - i32.ge_s - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $4 - i32.const 10 - i32.mul - local.get $3 - i32.add - local.set $4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - i32.const 48 - i32.sub - local.set $3 - br $for-loop|5 - end - end - local.get $4 - local.get $9 - i32.mul - end - i32.add - local.tee $0 - i32.const -342 - i32.lt_s - i32.or - br_if $~lib/util/string/scientific|inlined.0 - f64.const inf - local.set $8 - local.get $0 - i32.const 308 - i32.gt_s - br_if $~lib/util/string/scientific|inlined.0 - local.get $6 - f64.convert_i64_u - local.set $8 - local.get $0 - i32.eqz - br_if $~lib/util/string/scientific|inlined.0 - local.get $0 - i32.const 37 - i32.le_s - local.get $0 - i32.const 22 - i32.gt_s - i32.and - if - local.get $8 - local.get $0 - i32.const 3 - i32.shl - i32.const 4496 - i32.add - f64.load - f64.mul - local.set $8 - i32.const 22 - local.set $0 - end - local.get $6 - i64.const 9007199254740991 - i64.le_u - if (result i32) - local.get $0 - i32.const 31 - i32.shr_s - local.tee $1 - local.get $0 - local.get $1 - i32.add - i32.xor - i32.const 22 - i32.le_s - else - i32.const 0 - end - if (result f64) - local.get $0 - i32.const 0 - i32.gt_s - if - local.get $8 - local.get $0 - i32.const 3 - i32.shl - i32.const 4672 - i32.add - f64.load - f64.mul - local.set $8 - br $~lib/util/string/scientific|inlined.0 - end - local.get $8 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.const 4672 - i32.add - f64.load - f64.div - else - local.get $0 - i32.const 0 - i32.lt_s - if (result f64) - local.get $6 - local.get $6 - i64.clz - local.tee $7 - i64.shl - local.set $6 - local.get $0 - i64.extend_i32_s - local.get $7 - i64.sub - local.set $7 - loop $for-loop|6 - local.get $0 - i32.const -14 - i32.le_s - if - local.get $6 - i64.const 6103515625 - i64.rem_u - local.get $6 - i64.const 6103515625 - i64.div_u - local.tee $6 - i64.clz - local.tee $12 - i64.const 18 - i64.sub - i64.shl - f64.convert_i64_u - f64.const 0.00004294967296 - f64.mul - f64.nearest - i64.trunc_sat_f64_u - local.get $6 - local.get $12 - i64.shl - i64.add - local.set $6 - local.get $7 - local.get $12 - i64.sub - local.set $7 - local.get $0 - i32.const 14 - i32.add - local.set $0 - br $for-loop|6 - end - end - local.get $6 - i32.const 0 - local.get $0 - i32.sub - call $~lib/math/ipow32 - i64.extend_i32_s - local.tee $13 - i64.div_u - local.tee $14 - i64.clz - local.set $12 - local.get $6 - local.get $13 - i64.rem_u - f64.convert_i64_u - i64.reinterpret_f64 - local.get $12 - i64.const 52 - i64.shl - i64.add - f64.reinterpret_i64 - local.get $13 - f64.convert_i64_u - f64.div - i64.trunc_sat_f64_u - local.get $14 - local.get $12 - i64.shl - i64.add - f64.convert_i64_u - local.get $7 - local.get $12 - i64.sub - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - else - local.get $6 - local.get $6 - i64.ctz - local.tee $7 - i64.shr_u - local.set $6 - local.get $7 - local.get $0 - i64.extend_i32_s - i64.add - global.set $~lib/util/string/__fixmulShift - loop $for-loop|7 - local.get $0 - i32.const 13 - i32.ge_s - if - i64.const 32 - local.get $6 - i64.const 32 - i64.shr_u - i64.const 1220703125 - i64.mul - local.get $6 - i64.const 4294967295 - i64.and - i64.const 1220703125 - i64.mul - local.tee $6 - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.clz - i64.extend_i32_u - local.tee $12 - i64.sub - local.tee $13 - global.get $~lib/util/string/__fixmulShift - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $6 - local.get $12 - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - local.get $7 - local.get $12 - i64.shl - local.get $6 - i64.const 4294967295 - i64.and - local.get $13 - i64.shr_u - i64.or - i64.add - local.set $6 - local.get $0 - i32.const 13 - i32.sub - local.set $0 - br $for-loop|7 - end - end - local.get $0 - call $~lib/math/ipow32 - i64.extend_i32_u - local.tee $7 - local.get $6 - i64.const 4294967295 - i64.and - i64.mul - local.set $12 - i64.const 32 - local.get $6 - i64.const 32 - i64.shr_u - local.get $7 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.tee $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.clz - i64.extend_i32_u - local.tee $7 - i64.sub - local.tee $13 - global.get $~lib/util/string/__fixmulShift - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $12 - local.get $7 - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - local.get $6 - local.get $7 - i64.shl - local.get $12 - i64.const 4294967295 - i64.and - local.get $13 - i64.shr_u - i64.or - i64.add - f64.convert_i64_u - global.get $~lib/util/string/__fixmulShift - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - end - end - local.set $8 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - local.get $10 - f64.copysign - return + local.set $2 + 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 + ) + (func $~lib/string/String#slice (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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + 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 + 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 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 -2 + i32.and + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + local.get $2 + i32.add + local.tee $4 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - f64.const nan:0x8000000000000 + i32.const 1712 return end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $4 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $4 + i32.add + local.get $1 + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 - f64.const 0 - f64.mul + local.get $4 ) - (func $~lib/number/F64.parseFloat (param $0 i32) (result f64) - (local $1 f64) + (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 1440 + i32.const 295 + 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 + 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 + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7386,23 +5934,54 @@ local.get $0 i32.store local.get $0 - call $~lib/util/string/strtod + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/strtol (result i32) - (local $0 i32) + (func $~lib/util/string/strtod (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 4880 - local.set $2 + (local $6 i64) + (local $7 i64) + (local $8 f64) + (local $9 i32) + (local $10 f64) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7422,663 +6001,988 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4880 + local.get $0 i32.store - block $folding-inner0 - i32.const 4876 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $folding-inner0 - i32.const 4880 - i32.load16_u - local.set $1 - loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$8 (result i32) - 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 - local.get $1 - i32.const 5760 - i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$8 - drop - 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$8 - 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 + block $folding-inner1 + block $folding-inner0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.eqz + br_if $folding-inner0 + local.get $0 + i32.load16_u + local.set $4 + f64.const 1 + local.set $10 + loop $while-continue|0 + local.get $5 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$7 (result i32) + local.get $4 + i32.const 128 + i32.or + i32.const 160 i32.eq - br_if $case6|0 - br $break|0 + local.get $4 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $4 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$7 + drop + i32.const 1 + local.get $4 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$7 + drop + block $break|0 + block $case6|0 + local.get $4 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$7 + end + i32.const 0 end + else + i32.const 0 + end + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $4 + local.get $5 i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$8 + i32.sub + local.set $5 + br $while-continue|0 end - i32.const 0 end - if - local.get $2 + local.get $5 + i32.eqz + br_if $folding-inner0 + local.get $4 + i32.const 45 + i32.eq + if (result i32) + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $folding-inner0 + f64.const -1 + local.set $10 + local.get $0 i32.const 2 i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $1 + else + local.get $4 + i32.const 43 + i32.eq + if (result i32) + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $folding-inner0 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $4 + end + end + local.tee $4 + i32.const 73 + i32.eq + local.get $5 + i32.const 8 + i32.ge_s + i32.and + if local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 + i64.load + i64.const 29555310648492105 + i64.eq + if (result i32) + local.get $0 + i64.load offset=8 + i64.const 34058970405077102 + i64.eq + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + f64.const inf + f64.mul + return + end + br $folding-inner0 end - end - i32.const 1 - local.set $4 - local.get $1 - i32.const 45 - i32.eq - local.tee $6 - local.get $1 - i32.const 43 - i32.eq - i32.or - if (result i32) - local.get $0 - i32.const 1 + local.get $4 + i32.const 46 + i32.ne + local.get $4 + i32.const 48 i32.sub - local.tee $0 - i32.eqz + i32.const 10 + i32.ge_u + i32.and br_if $folding-inner0 - i32.const -1 - i32.const 1 - local.get $6 - select - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.tee $2 - i32.load16_u - else - local.get $1 - end - i32.const 48 - i32.eq - local.get $0 - i32.const 2 - i32.gt_s - i32.and - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $2 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $1 - i32.const 98 - i32.ne + local.get $0 + local.set $3 + loop $while-continue|1 + local.get $4 + i32.const 48 + i32.eq + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + local.get $5 + i32.const 0 + i32.le_s + br_if $folding-inner1 + local.get $4 + i32.const 46 + i32.eq + if + local.get $0 + local.get $3 + i32.eq + local.set $3 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $3 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + i32.and + br_if $folding-inner0 + i32.const 1 + local.set $9 + loop $for-loop|2 + local.get $0 + i32.load16_u + local.tee $4 + i32.const 48 + i32.eq + if + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $for-loop|2 + end + end + local.get $5 + i32.const 0 + i32.le_s + br_if $folding-inner1 + local.get $3 + local.get $1 + i32.eqz + i32.and + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.ge_u + i32.and + br_if $folding-inner0 + end + local.get $4 + i32.const 48 + i32.sub + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 10 + i32.lt_u + local.tee $11 + local.get $9 + i32.eqz + local.get $4 + i32.const 46 + i32.eq + i32.and + i32.or + if + block $for-break3 + local.get $11 if - local.get $1 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 + local.get $2 + i32.const 19 + i32.lt_s + if (result i64) + local.get $3 + i64.extend_i32_u + local.get $6 + i64.const 10 + i64.mul + i64.add + else + local.get $6 + local.get $3 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.or + end + local.set $6 + local.get $2 + i32.const 1 + i32.add + local.set $2 + else + local.get $2 + local.set $1 + i32.const 1 + local.set $9 end - local.get $2 - i32.const 4 - i32.add - local.set $2 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $for-break3 local.get $0 i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.tee $4 + i32.const 48 i32.sub - local.set $0 - i32.const 2 local.set $3 - br $break|1 + br $for-loop|3 end - local.get $2 - i32.const 4 + end + end + local.get $1 + local.get $2 + local.get $9 + select + local.set $1 + i32.const 1 + local.set $9 + i32.const 0 + local.set $4 + block $~lib/util/string/scientific|inlined.0 + local.get $6 + i64.eqz + block $~lib/util/string/parseExp|inlined.0 (result i32) + i32.const 0 + local.get $0 + i32.load16_u + i32.const 32 + i32.or + i32.const 101 + i32.ne + br_if $~lib/util/string/parseExp|inlined.0 + drop + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 i32.add - local.set $2 + local.tee $0 + i32.load16_u + local.tee $3 + i32.const 45 + i32.eq + if (result i32) + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + i32.const -1 + local.set $9 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $3 + i32.const 43 + i32.eq + if (result i32) + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $3 + end + end + local.set $3 + loop $while-continue|4 + local.get $3 + i32.const 48 + i32.eq + if + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $3 + br $while-continue|4 + end + end + local.get $3 + i32.const 48 + i32.sub + local.set $3 + loop $for-loop|5 + local.get $3 + i32.const 10 + i32.lt_u + i32.const 0 + local.get $5 + select + if + local.get $9 + i32.const 3200 + i32.mul + local.get $4 + i32.const 3200 + i32.ge_s + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $4 + i32.const 10 + i32.mul + local.get $3 + i32.add + local.set $4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + i32.const 48 + i32.sub + local.set $3 + br $for-loop|5 + end + end + local.get $4 + local.get $9 + i32.mul + end + local.get $1 + i32.const 19 + local.get $2 + local.get $2 + i32.const 19 + i32.gt_s + select + i32.sub + i32.add + local.tee $0 + i32.const -342 + i32.lt_s + i32.or + br_if $~lib/util/string/scientific|inlined.0 + f64.const inf + local.set $8 + local.get $0 + i32.const 308 + i32.gt_s + br_if $~lib/util/string/scientific|inlined.0 + local.get $6 + f64.convert_i64_u + local.set $8 + local.get $0 + i32.eqz + br_if $~lib/util/string/scientific|inlined.0 + local.get $0 + i32.const 37 + i32.le_s + local.get $0 + i32.const 22 + i32.gt_s + i32.and + if + local.get $8 local.get $0 - i32.const 2 - i32.sub + i32.const 3 + i32.shl + i32.const 4496 + i32.add + f64.load + f64.mul + local.set $8 + i32.const 22 local.set $0 - i32.const 8 - local.set $3 - br $break|1 end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $3 - end - end - local.get $3 - i32.const 10 - local.get $3 - select - local.set $6 - local.get $0 - i32.const 1 - i32.sub - local.set $7 - loop $while-continue|2 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - if - block $while-break|2 - local.get $2 - i32.load16_u - local.tee $3 - i32.const 48 - i32.sub + local.get $6 + i64.const 9007199254740991 + i64.le_u + if (result i32) + local.get $0 + i32.const 31 + i32.shr_s local.tee $1 - i32.const 10 - i32.ge_u + local.get $0 + local.get $1 + i32.add + i32.xor + i32.const 22 + i32.le_s + else + i32.const 0 + end + if (result f64) + local.get $0 + i32.const 0 + i32.gt_s if - local.get $3 - i32.const 65 + local.get $8 + local.get $0 + i32.const 3 + i32.shl + i32.const 4672 + i32.add + f64.load + f64.mul + local.set $8 + br $~lib/util/string/scientific|inlined.0 + end + local.get $8 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.const 4672 + i32.add + f64.load + f64.div + else + local.get $0 + i32.const 0 + i32.lt_s + if (result f64) + local.get $6 + local.get $6 + i64.clz + local.tee $7 + i64.shl + local.set $6 + local.get $0 + i64.extend_i32_s + local.get $7 + i64.sub + local.set $7 + loop $for-loop|6 + local.get $0 + i32.const -14 + i32.le_s + if + local.get $6 + i64.const 6103515625 + i64.rem_u + local.get $6 + i64.const 6103515625 + i64.div_u + local.tee $6 + i64.clz + local.tee $12 + i64.const 18 + i64.sub + i64.shl + f64.convert_i64_u + f64.const 0.00004294967296 + f64.mul + f64.nearest + i64.trunc_sat_f64_u + local.get $6 + local.get $12 + i64.shl + i64.add + local.set $6 + local.get $7 + local.get $12 + i64.sub + local.set $7 + local.get $0 + i32.const 14 + i32.add + local.set $0 + br $for-loop|6 + end + end + local.get $6 + i32.const 0 + local.get $0 i32.sub - i32.const 25 - i32.le_u - if (result i32) - local.get $3 - i32.const 55 - i32.sub - else - local.get $3 - i32.const 87 - i32.sub - local.get $3 - local.get $3 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select + call $~lib/math/ipow32 + i64.extend_i32_s + local.tee $13 + i64.div_u + local.tee $14 + i64.clz + local.set $12 + local.get $6 + local.get $13 + i64.rem_u + f64.convert_i64_u + i64.reinterpret_f64 + local.get $12 + i64.const 52 + i64.shl + i64.add + f64.reinterpret_i64 + local.get $13 + f64.convert_i64_u + f64.div + i64.trunc_sat_f64_u + local.get $14 + local.get $12 + i64.shl + i64.add + f64.convert_i64_u + local.get $7 + local.get $12 + i64.sub + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn + else + local.get $6 + local.get $6 + i64.ctz + local.tee $7 + i64.shr_u + local.set $6 + local.get $7 + local.get $0 + i64.extend_i32_s + i64.add + global.set $~lib/util/string/__fixmulShift + loop $for-loop|7 + local.get $0 + i32.const 13 + i32.ge_s + if + i64.const 32 + local.get $6 + i64.const 32 + i64.shr_u + i64.const 1220703125 + i64.mul + local.get $6 + i64.const 4294967295 + i64.and + i64.const 1220703125 + i64.mul + local.tee $6 + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.clz + i64.extend_i32_u + local.tee $12 + i64.sub + local.tee $13 + global.get $~lib/util/string/__fixmulShift + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $6 + local.get $12 + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + local.get $7 + local.get $12 + i64.shl + local.get $6 + i64.const 4294967295 + i64.and + local.get $13 + i64.shr_u + i64.or + i64.add + local.set $6 + local.get $0 + i32.const 13 + i32.sub + local.set $0 + br $for-loop|7 + end end - local.set $1 - end - local.get $1 - local.get $6 - i32.ge_u - if local.get $0 + call $~lib/math/ipow32 + i64.extend_i32_u + local.tee $7 + local.get $6 + i64.const 4294967295 + i64.and + i64.mul + local.set $12 + i64.const 32 local.get $7 - i32.eq - br_if $folding-inner0 - br $while-break|2 + local.get $6 + i64.const 32 + i64.shr_u + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.tee $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.clz + i64.extend_i32_u + local.tee $7 + i64.sub + local.tee $13 + global.get $~lib/util/string/__fixmulShift + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $12 + local.get $7 + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + local.get $6 + local.get $7 + i64.shl + local.get $12 + i64.const 4294967295 + i64.and + local.get $13 + i64.shr_u + i64.or + i64.add + f64.convert_i64_u + global.get $~lib/util/string/__fixmulShift + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn end - local.get $5 - local.get $6 - i32.mul - local.get $1 - i32.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|2 end + local.set $8 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + local.get $10 + f64.copysign + return end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.mul + f64.const nan:0x8000000000000 return end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $10 + f64.const 0 + f64.mul ) - (func $~lib/util/string/strtol (result i64) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) (local $4 i64) (local $5 i64) - (local $6 i32) - (local $7 i32) - i32.const 4928 - 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 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 - i32.const 4928 - i32.store - block $folding-inner0 - i32.const 4924 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $folding-inner0 - i32.const 4928 - i32.load16_u - local.set $1 - loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$9 (result i32) - 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 - local.get $1 - i32.const 5760 - i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$9 - drop - 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$9 - 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$9 - end - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.add - local.tee $2 - i32.load16_u - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - i64.const 1 - local.set $4 - local.get $1 - i32.const 45 - i32.eq - local.tee $6 - local.get $1 - i32.const 43 - i32.eq - i32.or - if (result i32) + local.get $3 + i64.extend_i32_s + local.set $5 + local.get $3 + local.get $3 + i32.const 1 + i32.sub + i32.and + if + loop $do-loop|1 local.get $0 + local.get $2 i32.const 1 i32.sub - local.tee $0 - i32.eqz - br_if $folding-inner0 - i64.const -1 - i64.const 1 - local.get $6 - select - local.set $4 - local.get $2 - i32.const 2 - i32.add local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + local.get $5 + i64.div_u + local.tee $1 + local.get $5 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.const 17696 + i32.add i32.load16_u - else + i32.store16 local.get $1 + i64.const 0 + i64.ne + br_if $do-loop|1 end - i32.const 48 - i32.eq - local.get $0 - i32.const 2 - i32.gt_s - i32.and - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $2 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $1 - i32.const 98 - i32.ne - if - local.get $1 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 2 - local.set $3 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 8 - local.set $3 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $3 - end - end - local.get $3 - i32.const 10 + else local.get $3 - select - local.set $6 - local.get $0 - i32.const 1 - i32.sub - local.set $7 - loop $while-continue|2 + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $4 + local.get $5 + i64.const 1 + i64.sub + local.set $5 + loop $do-loop|0 local.get $0 - local.tee $1 + local.get $2 i32.const 1 i32.sub - local.set $0 + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $1 - if - block $while-break|2 - local.get $2 - i32.load16_u - local.tee $3 - i32.const 48 - i32.sub - local.tee $1 - i32.const 10 - i32.ge_u - if - local.get $3 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - if (result i32) - local.get $3 - i32.const 55 - i32.sub - else - local.get $3 - i32.const 87 - i32.sub - local.get $3 - local.get $3 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - end - local.set $1 - end - local.get $1 - local.get $6 - i32.ge_u - if - local.get $0 - local.get $7 - i32.eq - br_if $folding-inner0 - br $while-break|2 - end - local.get $1 - i64.extend_i32_u - local.get $5 - local.get $6 - i64.extend_i32_s - i64.mul - i64.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|2 - end - end + local.get $5 + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.const 17696 + i32.add + i32.load16_u + i32.store16 + local.get $1 + local.get $4 + i64.shr_u + local.tee $1 + i64.const 0 + i64.ne + br_if $do-loop|0 + end + end + ) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) + (local $1 f64) + (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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + 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 23280 + local.set $2 + block $~lib/util/number/dtoa_impl|inlined.1 + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.1 + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + i32.const 7696 + local.set $2 + local.get $1 + local.get $1 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.1 + i32.const 8960 + i32.const 23312 + local.get $1 + f64.const 0 + f64.lt + select + local.set $2 + br $~lib/util/number/dtoa_impl|inlined.1 end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i64.mul - return + local.get $1 + i32.const 1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 23344 + local.get $3 + memory.copy end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i64.const 0 - ) - (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 -2 - i32.and - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $3 local.get $2 - i32.add - local.tee $4 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return + ) + (func $~lib/string/String.fromCharCode@varargs (param $0 i32) (result i32) + (local $1 i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const -1 + local.set $1 end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 local.get $0 - local.get $2 - memory.copy - local.get $2 - local.get $4 - i32.add local.get $1 - local.get $3 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 + call $~lib/string/String.fromCharCode ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__not (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8093,23 +6997,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 - local.get $1 - call $~lib/string/String#concat + if (result i32) + 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 + else + i32.const 0 + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.eqz ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lte (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8136,272 +7046,628 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/string/String.__eq + call $~lib/string/String.__gt i32.eqz global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/step (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 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 $0 - local.get $1 - i32.eq - br_if $folding-inner0 - 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 - local.tee $2 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 59404 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount return 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 - local.get $0 - i32.const 0 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.gt_s - local.get $2 - local.get $3 - i32.gt_s - local.get $0 - select - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/string/String.__lt (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 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 $0 - local.get $1 - i32.eq - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - i32.eqz - br_if $folding-inner0 - 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 - local.tee $3 - i32.eqz + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 59404 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 59404 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1648 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $0 - i32.const 0 - local.get $1 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.gt_s - local.tee $0 - select - call $~lib/util/string/compareImpl - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.lt_s - local.get $0 - local.get $1 - select - return + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $~lib/string/String.__gte (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=16 + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + local.get $3 + i32.load offset=16 + local.tee $0 local.get $0 local.get $1 - call $~lib/string/String.__lt - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.gt_u + select + memory.copy + local.get $2 ) - (func $~lib/string/String.__lte (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 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + (func $~lib/util/number/dtoa_core (param $0 f64) (param $1 i32) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + local.get $0 + f64.const 0 + f64.lt + local.tee $3 if - i32.const 59424 - i32.const 59472 + i32.const 23344 + i32.const 45 + i32.store16 + local.get $0 + f64.neg + local.set $0 + end + local.get $1 + if (result i32) + local.get $0 + f32.demote_f64 + i32.reinterpret_f32 + local.tee $5 + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.set $9 + local.get $5 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.get $9 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + i64.add + local.set $2 + local.get $9 i32.const 1 + local.get $9 + select + i32.const 150 + i32.sub + else + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $5 + local.get $2 + i64.const 4503599627370495 + i64.and + local.get $5 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.set $2 + local.get $5 i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $5 + select + i32.const 1075 + i32.sub end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.tee $9 + i32.const 1 + i32.sub + local.get $2 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $4 + i64.clz + i32.wrap_i64 + local.tee $10 + i32.sub + local.set $5 + local.get $4 + local.get $10 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $2 + local.get $2 + i64.const 8388608 + i64.const 4503599627370496 + local.get $1 + select + i64.eq + i32.const 1 + i32.add + local.tee $1 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $9 + local.get $1 + i32.sub + local.get $5 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $5 + 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_sat_f64_s + local.tee $1 local.get $1 - i32.store offset=4 + f64.convert_i32_s local.get $0 + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 3 + i32.shl + local.tee $5 + i32.sub + global.set $~lib/util/number/_K + local.get $5 + i32.const 23400 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow local.get $1 - call $~lib/string/String.__gt - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 + i32.shl + i32.const 24096 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $2 + local.get $2 + i64.clz + i64.shl + local.tee $2 + i64.const 4294967295 + i64.and + local.set $6 + global.get $~lib/util/number/_frc_pow + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $6 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + global.get $~lib/util/number/_frc_plus + local.tee $4 + i64.const 4294967295 + i64.and + local.set $13 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $4 + local.get $12 + i64.mul + local.get $12 + local.get $13 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $8 + global.get $~lib/util/number/_frc_minus + local.tee $14 + i64.const 4294967295 + i64.and + local.set $15 + local.get $14 + i64.const 32 + i64.shr_u + local.tee $14 + local.get $12 + i64.mul + local.get $12 + local.get $15 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $3 + i32.const 1 + i32.shl + i32.const 23344 + i32.add + local.get $2 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + 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 + local.get $2 + local.get $4 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $13 + i64.mul + local.get $8 + 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 $4 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $4 + local.get $2 + local.get $14 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $15 + i64.mul + local.get $12 + 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 $3 + call $~lib/util/number/genDigits + local.get $3 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCodes (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 @@ -8410,121 +7676,74 @@ i32.const 26636 i32.lt_s if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - local.set $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $4 - i64.extend_i32_s - local.get $1 - i64.extend_i32_s - i64.mul - i64.const 268435456 - i64.gt_u - end - if - i32.const 14064 - i32.const 1328 - i32.const 334 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.eqz - local.get $1 - i32.eqz - i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return - end - local.get $1 - i32.const 1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $4 - i32.mul i32.const 1 i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $4 - i32.const 1 - i32.shl - local.tee $4 - local.get $1 - i32.mul - local.set $1 - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 local.get $1 - local.get $2 - i32.gt_u + i32.lt_s if local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add local.get $3 + local.get $0 + i32.const 2 + i32.shl i32.add + i32.load + i32.store16 local.get $0 - local.get $4 - memory.copy - local.get $2 - local.get $4 + i32.const 1 i32.add - local.set $2 - br $while-continue|0 + 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 - local.get $3 + local.get $2 ) - (func $~lib/string/String#replace (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#trimStart (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 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8542,156 +7761,145 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.le_u - if - local.get $3 - local.get $4 - i32.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - local.set $0 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - 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 - local.get $0 - local.get $1 - i32.const 0 - call $~lib/string/String#indexOf - local.tee $1 - i32.const -1 - i32.xor - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + i32.const -2 + i32.and + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - local.get $4 - local.get $3 - i32.sub - local.tee $6 - i32.add - local.tee $4 - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=8 - local.get $4 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - local.tee $7 - memory.copy - local.get $4 - local.get $7 - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - memory.copy - local.get $4 - local.get $1 - local.get $5 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - local.get $3 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $6 + i32.lt_u + if (result i32) + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $0 + local.get $1 + i32.add + i32.load16_u + local.tee $3 + i32.const 5760 + i32.lt_u + if + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + 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 $3 + 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 $3 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $3 + 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 - i32.sub - i32.const 1 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 2 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return + local.set $1 + br $while-continue|0 end end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) - (func $~lib/string/String#replaceAll (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#trimEnd (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 $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8706,9 +7914,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -8716,807 +7923,1197 @@ i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $folding-inner1 + i32.const -2 + i32.and + local.tee $3 + local.set $1 + loop $while-continue|0 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $8 - local.get $3 - i32.ge_u - if - local.get $3 - local.get $8 - i32.ge_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$1 (result i32) local.get $0 local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - local.set $0 - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $4 - block $folding-inner0 - local.get $8 - i32.eqz - if - local.get $4 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $3 - i32.const 1 i32.add - local.get $4 - i32.mul - i32.add - i32.const 1 - i32.shl i32.const 2 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=8 - local.get $11 - local.get $2 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $4 - local.set $1 - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_u - if - local.get $11 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $11 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.sub + i32.load16_u + local.tee $2 + i32.const 5760 + i32.lt_u + if + 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 + br $__inlined_func$~lib/util/string/isSpace$1 end - br $folding-inner0 - end - local.get $4 - local.get $8 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $3 i32.const 1 - i32.shl - local.tee $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=12 - local.get $11 - local.get $0 - local.get $3 - memory.copy - loop $while-continue|1 - 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 - local.get $10 - call $~lib/string/String#indexOf - local.tee $3 - i32.const -1 - i32.xor - if - local.get $11 - local.get $3 - i32.const 1 - i32.shl - i32.add + local.get $2 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$1 + drop + block $break|0 + block $case6|0 local.get $2 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $3 - local.get $8 - i32.add - local.set $10 - br $while-continue|1 + 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$1 end - br $folding-inner0 + i32.const 0 end - local.get $3 - local.set $5 - loop $while-continue|2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $1 + local.get $3 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + local.tee $3 + i32.const 1 + i32.shl + local.set $1 + loop $while-continue|0 + local.get $1 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$2 (result i32) local.get $0 local.get $1 - local.get $10 - call $~lib/string/String#indexOf - local.tee $7 - i32.const -1 - i32.xor + i32.add + i32.const 2 + i32.sub + i32.load16_u + local.tee $4 + i32.const 5760 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store - local.get $11 - call $~lib/string/String.__not - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=16 - end - local.get $7 - local.get $10 - i32.sub - local.tee $6 - local.get $9 - i32.add local.get $4 - i32.add - local.get $5 - i32.gt_u - if - global.get $~lib/memory/__stack_pointer - local.get $11 - local.get $5 - i32.const 1 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - local.tee $11 - i32.store offset=16 - end - local.get $11 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.const 1 - i32.shl - memory.copy - local.get $11 - local.get $6 - local.get $9 - i32.add - local.tee $6 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $4 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$2 + end + i32.const 1 + local.get $4 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$2 + drop + block $break|0 + block $case6|0 + local.get $4 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end i32.const 1 - i32.shl - i32.add - local.get $2 + br $__inlined_func$~lib/util/string/isSpace$2 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $1 + local.get $2 + i32.gt_u + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$3 (result i32) + local.get $0 + local.get $2 + i32.add + i32.load16_u + local.tee $4 + i32.const 5760 + i32.lt_u + if local.get $4 - i32.const 1 - i32.shl - memory.copy + i32.const 128 + i32.or + i32.const 160 + i32.eq local.get $4 - local.get $6 - i32.add - local.set $9 - local.get $7 - local.get $8 - i32.add - local.set $10 - br $while-continue|2 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$3 + end + i32.const 1 + local.get $4 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$3 + drop + block $break|00 + block $case6|01 + local.get $4 + i32.const 5760 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8232 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8233 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8239 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8287 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 12288 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 65279 + i32.eq + br_if $case6|01 + br $break|00 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$3 end + i32.const 0 end - local.get $11 - if - local.get $3 - local.get $10 + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|1 + end + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $2 + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#substring@varargs (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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#substring + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#substr@varargs (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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#substr + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#slice@varargs (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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 - local.tee $1 - local.get $9 - i32.add - local.get $5 - i32.gt_u - if - global.get $~lib/memory/__stack_pointer - local.get $11 - local.get $5 - i32.const 1 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - local.tee $11 - i32.store offset=16 - end - local.get $1 - if - local.get $11 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 1 - i32.shl - memory.copy - end - local.get $1 - local.get $9 - i32.add - local.tee $0 - local.get $5 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $11 - local.get $0 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - local.tee $11 - i32.store offset=16 - end - br $folding-inner0 + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#at (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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + 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.store + local.get $1 + 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 $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1264 + i32.const 1328 + i32.const 57 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + 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.get $2 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1648 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - br $folding-inner1 end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $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 26636 - i32.lt_s + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1648 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + local.get $1 + i32.load + local.tee $3 i32.const 1 - i32.shr_u - local.set $3 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.lt_s - if (result i32) + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 + i32.const 4 i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - local.get $3 + i32.const 4 + i32.add local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 + i32.load + i32.const -4 + i32.and 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 + local.tee $4 + i32.load + local.set $2 end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - i32.le_s + local.get $3 + i32.const 2 + i32.and if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer + local.get $4 local.get $2 - i32.const 1 - i32.shl - local.tee $2 i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.or + i32.store local.get $3 - ) - (func $~lib/string/String#slice@varargs (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 26636 - i32.lt_s + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1648 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $4 local.get $1 - local.get $2 - call $~lib/string/String#slice - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#substr (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 26636 - i32.lt_s + local.get $2 + i32.add + i32.ne if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1648 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end local.tee $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - local.get $1 - local.get $3 - i32.add - local.tee $1 i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.set $1 + i32.const 1648 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.sub - local.tee $3 + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 + i32.add + i32.const 2 i32.shl - local.tee $2 + i32.add + i32.load offset=96 + local.set $3 + local.get $1 i32.const 0 - i32.le_s + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $0 + i32.shl + i32.add local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 i32.shl i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/string/String#substr@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $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 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - 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 + block $__inlined_func$~lib/rt/itcms/Object#unlink$287 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 59404 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$287 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort unreachable end - i32.const 2147483647 - local.set $2 + 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 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#substr - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#substring (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 26608 + i32.load + i32.gt_u + if + i32.const 1264 + i32.const 1568 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 26612 + i32.add + i32.load + i32.const 32 + i32.and end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 - i32.gt_s select - local.tee $3 local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 + i32.or + i32.store offset=4 + local.get $0 local.get $1 + i32.store offset=8 local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $4 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - local.get $4 - i32.sub - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return - end - local.get $4 - i32.eqz - local.get $2 + local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.eq + i32.load offset=4 + i32.const 3 i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 - local.get $4 - i32.add - local.get $3 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + i32.store offset=8 ) - (func $~lib/string/String#substring@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__visit_members (param $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 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + 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 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - br_table $0of1 $1of1 $outOfRange + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $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 + br $folding-inner1 end unreachable end - i32.const 2147483647 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#substring - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $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 26636 - i32.lt_s - if i32.const 59424 i32.const 59472 i32.const 1 @@ -9525,88 +9122,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 14064 - i32.const 15664 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.tee $2 - i32.const 1073741820 - local.get $3 - i32.const 1 - i32.shl - local.tee $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $1 - local.get $1 - local.get $3 - i32.lt_u - select - local.tee $1 - call $~lib/rt/itcms/__renew - local.tee $3 - local.get $2 - i32.ne - if - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $1 - i32.store offset=8 - end + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) + (func $~lib/util/string/strtol (result i64) + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + i32.const 4928 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -9626,401 +9162,677 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 4928 i32.store - local.get $0 - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#split (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) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 36 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner4 - block $folding-inner3 - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 36 - memory.fill - local.get $2 - i32.eqz - br_if $folding-inner1 - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + block $folding-inner0 + i32.const 4924 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.eqz + br_if $folding-inner0 + i32.const 4928 + i32.load16_u + local.set $1 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$9 (result i32) + 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 + local.get $1 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$9 + drop + 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$9 + 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$9 + end + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + i64.const 1 + local.set $4 + local.get $1 + i32.const 45 + i32.eq + local.tee $6 + local.get $1 + i32.const 43 + i32.eq + i32.or + if (result i32) + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + i32.eqz + br_if $folding-inner0 + i64.const -1 + i64.const 1 + local.get $6 + select + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + else + local.get $1 + end + i32.const 48 + i32.eq + local.get $0 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 local.get $2 - i32.load offset=12 - i32.eqz + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $1 + i32.const 98 + i32.ne if - local.get $2 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 1 - i32.store offset=12 + local.get $1 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $1 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store local.get $2 - i32.load offset=4 - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner4 + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 2 + local.set $3 + br $break|1 end - 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 - i32.const 1 - i32.shr_u - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 2147483647 local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $8 - local.get $1 - i32.const 20 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - if - local.get $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - i32.const 1712 - i32.store - br $folding-inner4 - end - else - local.get $6 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $6 - local.get $8 - local.get $6 - local.get $8 - i32.lt_s - select - local.tee $3 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 + local.set $0 + i32.const 8 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 16 + local.set $3 + end + end + local.get $3 + i32.const 10 + local.get $3 + select + local.set $6 + local.get $0 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if + block $while-break|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 + i32.sub + local.tee $1 + i32.const 10 + i32.ge_u + if + local.get $3 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=12 - local.get $5 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $2 - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end + i32.const 55 + i32.sub + else + local.get $3 + i32.const 87 + i32.sub + local.get $3 + local.get $3 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select end - br $folding-inner4 + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=20 - loop $while-continue|1 - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $6 + i32.ge_u + if local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $1 + i64.extend_i32_u + local.get $5 + local.get $6 + i64.extend_i32_s + i64.mul + i64.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i64.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i64.const 0 + ) + (func $~lib/util/string/strtol (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) + i32.const 4880 + 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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + 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 + i32.const 4880 + i32.store + block $folding-inner0 + i32.const 4876 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.eqz + br_if $folding-inner0 + i32.const 4880 + i32.load16_u + local.set $1 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$8 (result i32) + 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 + local.get $1 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$8 + drop + 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$8 + drop + block $break|0 + block $case6|0 local.get $1 - i32.store offset=24 - local.get $0 + i32.const 5760 + i32.eq + br_if $case6|0 local.get $1 - local.get $3 - call $~lib/string/String#indexOf - local.tee $9 - i32.const -1 - i32.xor + 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$8 + end + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + i32.const 1 + local.set $4 + local.get $1 + i32.const 45 + i32.eq + local.tee $6 + local.get $1 + i32.const 43 + i32.eq + i32.or + if (result i32) + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + i32.eqz + br_if $folding-inner0 + i32.const -1 + i32.const 1 + local.get $6 + select + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + else + local.get $1 + end + i32.const 48 + i32.eq + local.get $0 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $2 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $1 + i32.const 98 + i32.ne if - local.get $9 - local.get $3 - i32.sub - local.tee $7 - i32.const 0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 1 - i32.shl - local.tee $10 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=28 - local.get $7 - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $10 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=24 - local.get $2 - local.get $7 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1712 - call $~lib/array/Array<~lib/string/String>#push - end - local.get $5 - i32.const 1 - i32.add - local.tee $5 - local.get $8 + local.get $1 + i32.const 111 i32.eq - br_if $folding-inner3 - local.get $4 - local.get $9 - i32.add - local.set $3 - br $while-continue|1 + br_if $case1|1 + local.get $1 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 end - end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=24 local.get $2 + i32.const 4 + i32.add + local.set $2 local.get $0 - call $~lib/array/Array<~lib/string/String>#push - br $folding-inner3 + i32.const 2 + i32.sub + local.set $0 + i32.const 2 + local.set $3 + br $break|1 end - local.get $6 - local.get $3 + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 8 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 16 + local.set $3 + end + end + local.get $3 + i32.const 10 + local.get $3 + select + local.set $6 + local.get $0 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if + block $while-break|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 i32.sub local.tee $1 - i32.const 0 - i32.gt_s + i32.const 10 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=32 - local.get $4 - local.get $0 local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=24 - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1712 - call $~lib/array/Array<~lib/string/String>#push + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $3 + i32.const 55 + i32.sub + else + local.get $3 + i32.const 87 + i32.sub + local.get $3 + local.get $3 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $1 end - br $folding-inner4 + local.get $1 + local.get $6 + i32.ge_u + if + local.get $0 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $6 + i32.mul + local.get $1 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 end - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 0 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.set $2 - br $folding-inner4 end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 + local.get $5 + i32.mul return end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (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 16220 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 16220 + 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 16220 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 16220 + 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/string/String#split@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10035,39 +9847,36 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - local.get $0 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 2 local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 + i32.const 0 + i32.gt_s + local.tee $3 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 - call $~lib/string/String#split + local.get $0 + i32.store16 + local.get $3 + if + local.get $2 + local.get $1 + i32.store16 offset=2 + end 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/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -10091,1088 +9900,2129 @@ i32.store local.get $1 local.get $0 - i32.load offset=12 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ge_u if - i32.const 1264 - i32.const 15664 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return end global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 15712 - i32.const 15664 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end + i32.load16_u + i32.store16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 ) - (func $start:std/string - (local $0 i32) - (local $1 f64) - (local $2 f32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 76 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 76 - memory.fill - global.get $std/string/str - i32.const 1056 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1200 - i32.const 1200 - call $~lib/string/String.__eq - i32.eqz + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1120 - i32.const 11 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1232 - i32.const 1232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 12 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - local.get $0 - i32.const 20 + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 i32.sub - i32.load offset=16 - i32.const 1 i32.shr_u i32.const 16 - i32.ne - 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 - global.get $std/string/str - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.store - block $__inlined_func$~lib/string/String#charCodeAt$294 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + 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 -1 - local.set $0 - br $__inlined_func$~lib/string/String#charCodeAt$294 + i32.const 0 + i32.const 1648 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load16_u - local.set $0 - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.ctz + local.get $1 i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - i32.const 104 - i32.ne - 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 - global.get $std/string/str - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - block $__inlined_func$~lib/string/String#codePointAt$295 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $0 - i32.const 1 - i32.le_u - 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/string/String#codePointAt$295 - end - local.get $0 i32.const 2 - i32.eq - local.get $4 - i32.load16_u offset=2 - local.tee $0 - i32.const 64512 - i32.and - i32.const 55296 - i32.ne - i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#codePointAt$295 - end - local.get $4 - i32.load16_u offset=4 - local.tee $4 - i32.const 64512 - i32.and - i32.const 56320 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#codePointAt$295 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 59408 + i32.const 0 + i32.store + i32.const 60976 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - i32.const 10 + i32.const 2 i32.shl - local.get $4 + i32.const 59408 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 59408 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 i32.add - i32.const 56613888 - i32.sub local.set $0 + br $for-loop|0 end - local.get $0 - i32.const 105 - i32.ne + end + i32.const 59408 + i32.const 60980 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 59408 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1648 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u if i32.const 0 - i32.const 1120 + i32.const 1648 + i32.const 389 i32.const 16 - i32.const 1 call $~lib/builtins/abort unreachable end - memory.size + local.get $3 + local.get $1 i32.const 16 - i32.shl - i32.const 59404 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 - 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 - 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 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 15 - call $~lib/string/String#at - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 15 - call $~lib/string/String#charAt - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $0 - local.get $4 - 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 - global.get $std/string/str - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const -1 - call $~lib/string/String#at - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $5 - i32.store offset=12 - local.get $4 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - call $~lib/string/String#charAt - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $0 - local.get $4 - call $~lib/string/String.__eq - i32.eqz + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.sub - call $~lib/string/String#at - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else local.get $0 - i32.const 1744 - call $~lib/string/String.__eq - i32.eqz + i32.const 1572 + i32.add + local.get $1 + i32.gt_u if i32.const 0 - i32.const 1120 - i32.const 19 - i32.const 1 + i32.const 1648 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1712 - call $~lib/string/String.__not - i32.eqz + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $std/string/str + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1264 + call $~lib/rt/itcms/__visit + i32.const 14064 + call $~lib/rt/itcms/__visit + i32.const 15712 + call $~lib/rt/itcms/__visit + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 16640 + call $~lib/rt/itcms/__visit + i32.const 17696 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne if - i32.const 0 - i32.const 1120 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - i32.const 1776 - call $~lib/string/String.__not + end + ) + (func $~lib/math/ipow32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + i32.const 5 + local.set $1 + i32.const 1 + local.set $2 + 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 0 - i32.const 1120 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - i32.const 1808 - call $~lib/string/String.__not + end + loop $while-continue|1 + local.get $0 if - i32.const 0 - i32.const 1120 - i32.const 23 + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 + br $while-continue|1 end - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/string/String.fromCharCode@varargs - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + end + local.get $2 + ) + (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) + local.get $1 + i32.const 1023 + i32.gt_s + if (result f64) local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz + f64.const 8988465674311579538646525e283 + f64.mul + local.set $0 + local.get $1 + i32.const 1023 + i32.sub + local.tee $1 + i32.const 1023 + i32.gt_s + if (result f64) + i32.const 1023 + local.get $1 + i32.const 1023 + i32.sub + local.tee $1 + local.get $1 + i32.const 1023 + i32.ge_s + select + local.set $1 + local.get $0 + f64.const 8988465674311579538646525e283 + f64.mul + else + local.get $0 + end + else + local.get $1 + i32.const -1022 + i32.lt_s + if (result f64) + local.get $0 + f64.const 2.004168360008973e-292 + f64.mul + local.set $0 + local.get $1 + i32.const 969 + i32.add + local.tee $1 + i32.const -1022 + i32.lt_s + if (result f64) + i32.const -1022 + local.get $1 + i32.const 969 + i32.add + local.tee $1 + local.get $1 + i32.const -1022 + i32.le_s + select + local.set $1 + local.get $0 + f64.const 2.004168360008973e-292 + f64.mul + else + local.get $0 + end + else + local.get $0 + end + end + local.get $1 + i64.extend_i32_s + i64.const 1023 + i64.add + i64.const 52 + i64.shl + f64.reinterpret_i64 + f64.mul + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + 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.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u if - i32.const 0 - i32.const 1120 - i32.const 25 - i32.const 1 + i32.const 14064 + i32.const 15664 + i32.const 19 + i32.const 48 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - i32.const 65600 - call $~lib/string/String.fromCharCode@varargs - local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1840 - call $~lib/string/String.__eq - i32.eqz + i32.load + local.tee $2 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $3 + i32.lt_u + select + local.tee $1 + call $~lib/rt/itcms/__renew + local.tee $3 + local.get $2 + i32.ne if + local.get $0 + local.get $3 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $3 i32.const 0 - i32.const 1120 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__link end - i32.const 1 - global.set $~argumentsLength - i32.const 54 - call $~lib/string/String.fromCharCode@varargs - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:std/string + ) + (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 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 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + 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.store + block $folding-inner0 local.get $0 - i32.const 1872 - call $~lib/string/String.__eq + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 i32.eqz + br_if $folding-inner0 + local.get $0 + i32.load16_u + local.set $3 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$6 (result i32) + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $3 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$6 + drop + i32.const 1 + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$6 + drop + block $break|0 + block $case6|0 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$6 + end + i32.const 0 + end + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $3 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + f64.const 1 + local.set $4 + local.get $3 + i32.const 45 + i32.eq + local.tee $6 + local.get $3 + i32.const 43 + i32.eq + i32.or if - i32.const 0 - i32.const 1120 - i32.const 27 + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.tee $2 + i32.eqz + br_if $folding-inner0 + f64.const -1 + f64.const 1 + local.get $6 + select + local.set $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $3 end - i32.const 1 - global.set $~argumentsLength - i32.const 65590 - call $~lib/string/String.fromCharCode@varargs - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz + local.get $1 if - i32.const 0 - i32.const 1120 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 2 + i32.lt_s + local.get $1 + i32.const 36 + i32.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i32.const 16 + i32.eq + if + local.get $3 + i32.const 48 + i32.eq + local.get $2 + i32.const 2 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + end + else + local.get $3 + i32.const 48 + i32.eq + local.get $2 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $0 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $3 + i32.const 98 + i32.ne + if + local.get $3 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $3 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + end + end + local.get $1 + i32.const 10 + local.get $1 + select + local.set $1 end - i32.const 55296 - i32.const 57088 - call $~lib/string/String.fromCharCode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 29 + local.get $2 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $2 + local.tee $3 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $2 + local.get $3 + if + block $while-break|2 + local.get $0 + i32.load16_u + local.tee $6 + i32.const 48 + i32.sub + local.tee $3 + i32.const 10 + i32.ge_u + if + local.get $6 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $6 + i32.const 55 + i32.sub + else + local.get $6 + i32.const 87 + i32.sub + local.get $6 + local.get $6 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $3 + end + local.get $1 + local.get $3 + i32.le_u + if + local.get $2 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $1 + f64.convert_i32_s + f64.mul + local.get $3 + f64.convert_i32_u + f64.add + local.set $5 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|2 + end + end end - i32.const 2 - i32.const 4 - i32.const 1936 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/string/String.fromCharCodes - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 i32.const 4 - i32.const 2000 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/string/String.fromCharCodes - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + f64.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + f64.const nan:0x8000000000000 + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 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 $0 - i32.const 2032 - 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 + 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 + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + 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 + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - i32.const 5 - i32.const 4 - i32.const 2064 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/string/String.fromCharCodes - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 i32.store - local.get $0 - i32.const 2112 - call $~lib/string/String.__eq - i32.eqz - if + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + 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 - i32.const 1120 - i32.const 32 + local.get $2 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/string/String.fromCodePoint - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if + i32.shl + 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.const 1120 - i32.const 34 + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + 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 + 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 + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + 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 + 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 + 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 $3 + select + i32.store16 + 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 + 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 + i32.const 4 + i32.add + local.tee $4 + 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 + 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 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end + end + end + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i64) + local.get $1 + local.get $0 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $2 + i32.sub + local.tee $11 + i64.extend_i32_s + local.tee $0 + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $12 + local.get $1 + i64.and + local.set $8 + local.get $1 + local.get $0 + i64.shr_u + i32.wrap_i64 + 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 - call $~lib/builtins/abort - unreachable + 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 - i32.const 54 - call $~lib/string/String.fromCodePoint - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1872 - 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 + 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 - i32.const 119558 - call $~lib/string/String.fromCodePoint - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2144 - call $~lib/string/String.__eq - i32.eqz + end + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s if - i32.const 0 - i32.const 1120 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - 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 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 2176 - i32.store - block $__inlined_func$~lib/string/String#startsWith$296 + 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 $2 + i32.const 1000000000 + i32.div_u + local.set $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $5 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $5 + end local.get $4 - i32.const 2172 - i32.load + local.get $5 + i32.or + if + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.const 1 + i32.shl + i32.const 23344 + i32.add + local.get $5 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $7 i32.const 1 - i32.shr_u - local.tee $4 - i32.lt_s + i32.sub + local.set $7 + local.get $3 + local.get $2 + i64.extend_i32_u + local.get $11 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $8 + i64.add + local.tee $0 + i64.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 + global.get $~lib/util/number/_K + local.get $7 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - br $__inlined_func$~lib/string/String#startsWith$296 + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 24272 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 + i32.const 1 + i32.shl + i32.const 23342 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u + local.get $3 + local.get $0 + i64.sub + local.get $1 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $0 + local.get $1 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $0 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 + end + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + return end - 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 0 - i32.const 2176 - local.get $4 - call $~lib/util/string/compareImpl - i32.eqz - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + br $while-continue|0 end - local.get $0 - i32.eqz + end + loop $while-continue|4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + local.get $8 + i64.const 10 + i64.mul + local.tee $0 + local.get $11 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne if - i32.const 0 - i32.const 1120 - i32.const 38 + local.get $4 + local.tee $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.shl + i32.const 23344 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store + local.get $7 i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2208 - 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 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.set $7 local.get $0 - i32.store + local.get $12 + i64.and + local.tee $8 + local.get $3 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 24272 + i32.add + i64.load32_u + i64.mul + local.set $0 + local.get $4 + i32.const 1 + i32.shl + i32.const 23342 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|6 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 2208 - i32.store - block $__inlined_func$~lib/string/String#endsWith$297 - i32.const 536870910 - local.get $4 - local.get $4 - i32.const 536870910 - i32.gt_s - select - i32.const 2204 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - br $__inlined_func$~lib/string/String#endsWith$297 - end - global.get $~lib/memory/__stack_pointer + local.get $8 + i64.gt_u + local.get $3 + local.get $8 + i64.sub + local.get $10 + i64.ge_u + i32.and + if (result i32) local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2208 - i32.store offset=4 + local.get $8 + local.get $10 + i64.add + local.tee $1 + i64.gt_u local.get $0 - local.get $5 - i32.const 2208 - local.get $4 - call $~lib/util/string/compareImpl - i32.eqz - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $8 + i64.sub + local.get $1 + local.get $0 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 39 + local.get $7 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $7 + local.get $8 + local.get $10 + i64.add + local.set $8 + br $while-continue|6 end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + ) + (func $std/string/getString (result i32) + global.get $std/string/str + ) + (func $start:std/string + (local $0 i32) + (local $1 f64) + (local $2 f32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 26636 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2240 - i32.store offset=4 - local.get $0 - i32.const 2240 i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 + i32.const 76 + memory.fill + global.get $std/string/str + i32.const 1056 i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.eqz if i32.const 0 i32.const 1120 - i32.const 40 + i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.const 2272 - call $~lib/string/String#padStart - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=4 - local.get $0 - local.get $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 10 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 15 - i32.const 2272 - call $~lib/string/String#padStart - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=4 - local.get $0 - local.get $4 + i32.const 1200 + i32.const 1200 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 43 + i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 3 - i32.const 2272 - call $~lib/string/String#padStart - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2304 + i32.const 1232 + i32.const 1232 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 44 + i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 10 - i32.const 1712 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 16 + i32.ne if i32.const 0 i32.const 1120 - i32.const 45 + i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 100 - i32.const 1712 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store - local.get $0 - i32.const 1808 - 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 - i32.const 2336 - i32.const 5 - i32.const 2272 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $0 - i32.const 2368 - 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 - i32.const 2336 - i32.const 6 - i32.const 2400 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + block $__inlined_func$~lib/string/String#charCodeAt$294 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + 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 $0 + br $__inlined_func$~lib/string/String#charCodeAt$294 + end + local.get $0 + i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end local.get $0 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz + i32.const 104 + i32.ne if i32.const 0 i32.const 1120 - i32.const 48 + i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 8 - i32.const 2400 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store + block $__inlined_func$~lib/string/String#codePointAt$295 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $0 + i32.const 1 + i32.le_u + 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/string/String#codePointAt$295 + end + local.get $0 + i32.const 2 + i32.eq + local.get $4 + i32.load16_u offset=2 + local.tee $0 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#codePointAt$295 + end + local.get $4 + i32.load16_u offset=4 + local.tee $4 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#codePointAt$295 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 10 + i32.shl + local.get $4 + i32.add + i32.const 56613888 + i32.sub + local.set $0 + end local.get $0 - i32.const 2464 - call $~lib/string/String.__eq - i32.eqz + i32.const 105 + i32.ne if i32.const 0 i32.const 1120 - i32.const 49 + i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end + memory.size + i32.const 16 + i32.shl + i32.const 59404 + 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 + 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 + 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 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $0 i32.store offset=8 local.get $0 - i32.const 0 - i32.const 2272 - call $~lib/string/String#padEnd + i32.const 15 + call $~lib/string/String#at local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -11180,6 +12030,13 @@ global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 15 + call $~lib/string/String#charAt + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=4 local.get $0 local.get $4 @@ -11188,7 +12045,7 @@ if i32.const 0 i32.const 1120 - i32.const 51 + i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable @@ -11198,9 +12055,8 @@ local.tee $0 i32.store offset=8 local.get $0 - i32.const 15 - i32.const 2272 - call $~lib/string/String#padEnd + i32.const -1 + call $~lib/string/String#at local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -11208,6 +12064,24 @@ global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $5 + i32.store offset=12 + local.get $4 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + call $~lib/string/String#charAt + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=4 local.get $0 local.get $4 @@ -11216,273 +12090,303 @@ if i32.const 0 i32.const 1120 - i32.const 52 + i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 3 - i32.const 2272 - call $~lib/string/String#padEnd + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.sub + call $~lib/string/String#at local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2304 + i32.const 1744 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 53 + i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 - i32.const 10 - i32.const 1712 - call $~lib/string/String#padEnd - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq + call $~lib/string/String.__not i32.eqz if i32.const 0 i32.const 1120 - i32.const 54 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1776 + call $~lib/string/String.__not + if + i32.const 0 + i32.const 1120 + i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1808 - i32.const 100 - i32.const 1712 - call $~lib/string/String#padEnd - 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 + call $~lib/string/String.__not if i32.const 0 i32.const 1120 - i32.const 55 + i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 5 - i32.const 2272 - call $~lib/string/String#padEnd + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2512 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 56 + i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 6 - i32.const 2336 - call $~lib/string/String#padEnd + i32.const 1 + global.set $~argumentsLength + i32.const 65600 + call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2544 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 57 + i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 8 - i32.const 2336 - call $~lib/string/String#padEnd + i32.const 1 + global.set $~argumentsLength + i32.const 54 + call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2576 + i32.const 1872 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 - i32.const 1712 - i32.const 1712 - i32.const 0 - call $~lib/string/String#indexOf - if - i32.const 0 - i32.const 1120 - i32.const 60 + i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2176 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne + i32.const 1 + global.set $~argumentsLength + i32.const 65590 + call $~lib/string/String.fromCharCode@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1872 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 61 + i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 - i32.const 0 - call $~lib/string/String#indexOf + i32.const 55296 + i32.const 57088 + call $~lib/string/String.fromCharCode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1904 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 62 + i32.const 29 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 2 + i32.const 4 + i32.const 1936 + call $~lib/rt/__newArray + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 + local.get $0 i32.store offset=4 local.get $0 - local.get $4 - i32.const 0 - call $~lib/string/String#indexOf + call $~lib/string/String.fromCharCodes + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 63 + i32.const 30 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 3 + i32.const 4 + i32.const 2000 + call $~lib/rt/__newArray + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.fromCharCodes + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - i32.const 1712 - i32.const 0 - call $~lib/string/String#indexOf + i32.const 2032 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 64 + i32.const 31 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 5 + i32.const 4 + i32.const 2064 + call $~lib/rt/__newArray + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.fromCharCodes + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - i32.const 2624 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne + i32.const 2112 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 65 + i32.const 32 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 0 + call $~lib/string/String.fromCodePoint + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 i32.store local.get $0 - i32.const 2656 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne + i32.const 1776 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 66 + i32.const 34 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 54 + call $~lib/string/String.fromCodePoint + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 i32.store local.get $0 - i32.const 2624 - i32.const 2 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne + i32.const 1872 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 67 + i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 119558 + call $~lib/string/String.fromCodePoint + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 i32.store local.get $0 - i32.const 2624 - i32.const 3 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne + i32.const 2144 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 68 + i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable @@ -11491,44 +12395,71 @@ global.get $std/string/str local.tee $0 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 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - i32.const 2688 - i32.const -1 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - global.set $~argumentsLength - i32.const 1712 - i32.const 1712 - call $~lib/string/String#lastIndexOf@varargs - if - i32.const 0 - i32.const 1120 - i32.const 71 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 2176 + i32.store + block $__inlined_func$~lib/string/String#startsWith$296 + local.get $4 + i32.const 2172 + i32.load i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + br $__inlined_func$~lib/string/String#startsWith$296 + end + 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 0 + i32.const 2176 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 1 - global.set $~argumentsLength - i32.const 1712 - i32.const 2176 - call $~lib/string/String#lastIndexOf@varargs - i32.const -1 - i32.ne + local.get $0 + i32.eqz if i32.const 0 i32.const 1120 - i32.const 72 + i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable @@ -11539,43 +12470,100 @@ i32.store i32.const 1 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1712 - call $~lib/string/String#lastIndexOf@varargs + i32.store global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 + i32.const 2208 + 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 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $4 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 73 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 2208 + i32.store + block $__inlined_func$~lib/string/String#endsWith$297 + i32.const 536870910 + local.get $4 + local.get $4 + i32.const 536870910 + i32.gt_s + select + i32.const 2204 + i32.load i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $4 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + br $__inlined_func$~lib/string/String#endsWith$297 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2208 + i32.store offset=4 + local.get $0 + local.get $5 + i32.const 2208 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - i32.const 1 - global.set $~argumentsLength + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 2624 - call $~lib/string/String#lastIndexOf@varargs - i32.const 2 - i32.ne + i32.eqz if i32.const 0 i32.const 1120 - i32.const 74 + i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable @@ -11584,17 +12572,38 @@ global.get $std/string/str local.tee $0 i32.store - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2656 - call $~lib/string/String#lastIndexOf@varargs + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2240 + i32.store offset=4 + local.get $0 + i32.const 2240 + i32.const 0 + call $~lib/string/String#indexOf i32.const -1 i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz if i32.const 0 i32.const 1120 - i32.const 75 + i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable @@ -11602,54 +12611,27 @@ global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $0 - i32.store - i32.const 1 - global.set $~argumentsLength + i32.store offset=8 local.get $0 - i32.const 2720 - call $~lib/string/String#lastIndexOf@varargs - i32.const 15 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 76 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store local.get $0 - i32.const 2624 - i32.const 2 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $0 - i32.store + local.tee $4 + i32.store offset=4 local.get $0 - i32.const 2624 - i32.const 3 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.ne + local.get $4 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 78 + i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable @@ -11657,2593 +12639,2761 @@ global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $0 - i32.store + i32.store offset=8 local.get $0 - i32.const 2688 - i32.const -1 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 15 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store local.get $0 - i32.const 2752 - i32.const 0 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $0 - i32.store + local.tee $4 + i32.store offset=4 local.get $0 - i32.const 2176 - i32.const 0 - call $~lib/string/String#lastIndexOf - if - i32.const 0 - i32.const 1120 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1712 - i32.const 1712 - call $~lib/string/String#localeCompare + local.get $4 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 83 + i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 i32.const 1712 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + i32.const 3 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 84 + i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 - i32.const 1808 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2784 - i32.const 2784 - call $~lib/string/String#localeCompare - if - i32.const 0 - i32.const 1120 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2336 - i32.const 2816 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + i32.const 10 + i32.const 1712 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 87 + i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2848 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + i32.const 1808 + i32.const 100 + i32.const 1712 + call $~lib/string/String#padStart + 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 1120 - i32.const 88 + i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2816 i32.const 2336 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + i32.const 5 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 89 + i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2880 i32.const 2336 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + i32.const 6 + i32.const 2400 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 90 + i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 i32.const 2336 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + i32.const 8 + i32.const 2400 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2464 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 91 + i32.const 49 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2880 - i32.const 2944 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 92 + i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2912 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 15 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 93 + i32.const 52 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2944 - i32.const 2880 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + i32.const 1712 + i32.const 3 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 94 + i32.const 53 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 - i32.const 2304 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + i32.const 10 + i32.const 1712 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 95 + i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1776 + i32.const 1808 + i32.const 100 i32.const 1712 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + call $~lib/string/String#padEnd + 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 1120 - i32.const 96 + i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - call $~lib/string/String#trimStart + i32.const 2336 + i32.const 5 + i32.const 2272 + call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 98 + i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 - call $~lib/string/String#trimStart + i32.const 2336 + i32.const 6 + i32.const 2336 + call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2976 + i32.const 2544 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 99 + i32.const 57 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 - call $~lib/string/String#trimStart + i32.const 2336 + i32.const 8 + i32.const 2336 + call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3056 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 100 + i32.const 58 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 - call $~lib/string/String#trimEnd - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + i32.const 0 + call $~lib/string/String#indexOf if i32.const 0 i32.const 1120 - i32.const 102 + i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 - call $~lib/string/String#trimEnd - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2976 - call $~lib/string/String.__eq - i32.eqz + i32.const 1712 + i32.const 2176 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 103 + i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 - call $~lib/string/String#trimEnd - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3104 - call $~lib/string/String.__eq - i32.eqz + i32.const 1808 + i32.const 1808 + i32.const 0 + call $~lib/string/String#indexOf if i32.const 0 i32.const 1120 - i32.const 104 + i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - call $~lib/string/String#trim - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + local.get $4 + i32.const 0 + call $~lib/string/String#indexOf if i32.const 0 i32.const 1120 - i32.const 106 + i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 - call $~lib/string/String#trim - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store local.get $0 - i32.const 2976 - call $~lib/string/String.__eq - i32.eqz + i32.const 1712 + i32.const 0 + call $~lib/string/String#indexOf if i32.const 0 i32.const 1120 - i32.const 107 + i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 - call $~lib/string/String#trim - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store local.get $0 - i32.const 2336 - call $~lib/string/String.__eq - i32.eqz + i32.const 2624 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 108 + i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3152 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3152 + global.get $std/string/str + local.tee $0 i32.store - i32.const 3152 - call $~lib/util/string/strtob - i32.eqz + local.get $0 + i32.const 2656 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 111 + i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3200 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 3200 + global.get $std/string/str + local.tee $0 i32.store - i32.const 3200 - call $~lib/util/string/strtob - i32.eqz + local.get $0 + i32.const 2624 + i32.const 2 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 112 + i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3248 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 3248 + global.get $std/string/str + local.tee $0 i32.store - i32.const 3248 - call $~lib/util/string/strtob + local.get $0 + i32.const 2624 + i32.const 3 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 113 + i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 1712 + global.get $std/string/str + local.tee $0 i32.store - i32.const 1712 - call $~lib/util/string/strtob + local.get $0 + i32.const 2688 + i32.const -1 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 114 + i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3296 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - i32.const 3296 - i32.store - i32.const 3296 - call $~lib/util/string/strtob + i32.const 1 + global.set $~argumentsLength + i32.const 1712 + i32.const 1712 + call $~lib/string/String#lastIndexOf@varargs if i32.const 0 i32.const 1120 - i32.const 115 + i32.const 71 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.store - i32.const 3328 - call $~lib/util/string/strtob + i32.const 1 + global.set $~argumentsLength + i32.const 1712 + i32.const 2176 + call $~lib/string/String#lastIndexOf@varargs + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 116 + i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3360 - i32.store offset=40 + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 1712 + call $~lib/string/String#lastIndexOf@varargs global.get $~lib/memory/__stack_pointer - i32.const 3360 + global.get $std/string/str + local.tee $4 i32.store - i32.const 3360 - call $~lib/util/string/strtob + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne if i32.const 0 i32.const 1120 - i32.const 117 + i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2624 + call $~lib/string/String#lastIndexOf@varargs + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 119 + i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3424 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2656 + call $~lib/string/String#lastIndexOf@varargs + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 120 + i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2720 + call $~lib/string/String#lastIndexOf@varargs + i32.const 15 + i32.ne if i32.const 0 i32.const 1120 - i32.const 121 + i32.const 76 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3488 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2624 + i32.const 2 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 122 + i32.const 77 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3520 - i32.const 0 - call $~lib/string/parseInt - f64.const 5 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2624 + i32.const 3 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 123 + i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3552 - i32.const 0 - call $~lib/string/parseInt - f64.const 455 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2688 + i32.const -1 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 124 + i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3584 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2752 i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.ne + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 125 + i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3616 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2176 i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.ne + call $~lib/string/String#lastIndexOf if i32.const 0 i32.const 1120 - i32.const 126 + i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3648 - i32.const 0 - call $~lib/string/parseInt - f64.const 11 - f64.ne + i32.const 1712 + i32.const 1712 + call $~lib/string/String#localeCompare if i32.const 0 i32.const 1120 - i32.const 127 + i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3680 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 1808 + i32.const 1712 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 128 + i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3712 - i32.const 0 - call $~lib/string/parseInt - f64.const -123 - f64.ne + i32.const 1712 + i32.const 1808 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 129 + i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3744 - i32.const 0 - call $~lib/string/parseInt - f64.const 123 - f64.ne + i32.const 2784 + i32.const 2784 + call $~lib/string/String#localeCompare if i32.const 0 i32.const 1120 - i32.const 130 + i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3776 - i32.const 0 - call $~lib/string/parseInt - f64.const -12 - f64.ne + i32.const 2336 + i32.const 2816 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 131 + i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + i32.const 2336 + i32.const 2848 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 132 + i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3808 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + i32.const 2816 + i32.const 2336 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 133 + i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3840 - i32.const 16 - call $~lib/string/parseInt - f64.const 2833 - f64.ne + i32.const 2880 + i32.const 2336 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 134 + i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3872 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 2912 + i32.const 2336 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 135 + i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3904 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 2880 + i32.const 2944 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 136 + i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3936 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 2336 + i32.const 2912 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 137 + i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3968 - i32.const 0 - call $~lib/string/parseInt - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i64.eqz + i32.const 2944 + i32.const 2880 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 138 + i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4000 - i32.const 0 - call $~lib/string/parseInt - i32.const 4048 - i32.const 16 - call $~lib/string/parseInt - f64.ne + i32.const 1712 + i32.const 2304 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 139 + i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4080 - i32.const 0 - call $~lib/string/parseInt - f64.const 36893488147419103232 - f64.ne + i32.const 1776 + i32.const 1712 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 140 + i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4080 - i32.const 13 - call $~lib/string/parseInt - f64.const 5135857308667095285760 - f64.ne + i32.const 1712 + call $~lib/string/String#trimStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 141 + i32.const 98 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4144 - i32.const 10 - call $~lib/string/parseInt - f64.const -1.e+24 - f64.ne + i32.const 2976 + call $~lib/string/String#trimStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 142 + i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4224 - i32.const 16 - call $~lib/string/parseInt - f64.const 75557863725914323419136 - f64.ne + i32.const 3008 + call $~lib/string/String#trimStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3056 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 143 + i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4288 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 1712 + call $~lib/string/String#trimEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 144 + i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4320 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 - f64.ne + i32.const 2976 + call $~lib/string/String#trimEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 145 + i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4368 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 3008 + call $~lib/string/String#trimEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3104 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 147 + i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4400 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 - f64.ne + i32.const 1712 + call $~lib/string/String#trim + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 148 + i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4448 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + i32.const 2976 + call $~lib/string/String#trim + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 149 + i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4480 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 3008 + call $~lib/string/String#trim + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 150 + i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4512 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store + i32.const 3152 + call $~lib/util/string/strtob + i32.eqz if i32.const 0 i32.const 1120 - i32.const 151 + i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store + i32.const 3200 + call $~lib/util/string/strtob + i32.eqz if i32.const 0 i32.const 1120 - i32.const 152 + i32.const 112 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4560 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store + i32.const 3248 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 153 + i32.const 113 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store + i32.const 1712 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 154 + i32.const 114 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 - i32.const 37 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store + i32.const 3296 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 155 + i32.const 115 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4624 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store + i32.const 3328 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 156 + i32.const 116 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4656 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store + i32.const 3360 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 157 + i32.const 117 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 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 3392 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store - i32.const 4656 - call $~lib/util/string/strtod - f32.demote_f64 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $2 - f32.eq + call $~lib/string/parseInt + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 158 + i32.const 119 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4656 - call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + i32.const 3424 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 159 + i32.const 120 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=44 - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store - i32.const 4656 - call $~lib/util/string/strtod - f32.demote_f64 - local.tee $2 - local.get $2 - f32.eq + i32.const 3456 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 160 + i32.const 121 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store - i32.const 4656 - call $~lib/util/string/strtod - local.tee $1 - local.get $1 - f64.eq + i32.const 3488 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 161 + i32.const 122 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 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 3520 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4880 - i32.store - call $~lib/util/string/strtol - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2147483647 - i32.ne + call $~lib/string/parseInt + f64.const 5 + f64.ne if i32.const 0 i32.const 1120 - i32.const 163 + i32.const 123 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4880 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer - i32.const 4880 - i32.store - call $~lib/util/string/strtol - i32.const 2147483647 - i32.ne + i32.const 3552 + i32.const 0 + call $~lib/string/parseInt + f64.const 455 + f64.ne if i32.const 0 i32.const 1120 - i32.const 164 + i32.const 124 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 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 3584 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4928 - i32.store - call $~lib/util/string/strtol - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i64.const 9223372036854775807 - i64.ne + call $~lib/string/parseInt + f64.const 3855 + f64.ne if i32.const 0 i32.const 1120 - i32.const 165 + i32.const 125 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4928 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - i32.const 4928 - i32.store - call $~lib/util/string/strtol - i64.const 9223372036854775807 - i64.ne + i32.const 3616 + i32.const 0 + call $~lib/string/parseInt + f64.const 3855 + f64.ne if i32.const 0 i32.const 1120 - i32.const 166 + i32.const 126 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 - call $~lib/number/F64.parseFloat - f64.const 0 + i32.const 3648 + i32.const 0 + call $~lib/string/parseInt + f64.const 11 f64.ne if i32.const 0 i32.const 1120 - i32.const 169 + i32.const 127 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - call $~lib/number/F64.parseFloat + i32.const 3680 + i32.const 0 + call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 170 + i32.const 128 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4992 - call $~lib/number/F64.parseFloat - f64.const 1 + i32.const 3712 + i32.const 0 + call $~lib/string/parseInt + f64.const -123 f64.ne if i32.const 0 i32.const 1120 - i32.const 171 + i32.const 129 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5024 - call $~lib/number/F64.parseFloat - f64.const 1 + i32.const 3744 + i32.const 0 + call $~lib/string/parseInt + f64.const 123 f64.ne if i32.const 0 i32.const 1120 - i32.const 172 + i32.const 130 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5056 - call $~lib/number/F64.parseFloat - f64.const 1e-05 + i32.const 3776 + i32.const 0 + call $~lib/string/parseInt + f64.const -12 f64.ne if i32.const 0 i32.const 1120 - i32.const 173 + i32.const 131 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5088 - call $~lib/number/F64.parseFloat - f64.const -1e-05 + i32.const 3392 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 174 + i32.const 132 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5120 - call $~lib/number/F64.parseFloat - f64.const -3e-23 + i32.const 3808 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 175 + i32.const 133 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5168 - call $~lib/number/F64.parseFloat - f64.const 3e21 + i32.const 3840 + i32.const 16 + call $~lib/string/parseInt + f64.const 2833 f64.ne if i32.const 0 i32.const 1120 - i32.const 176 + i32.const 134 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5216 - call $~lib/number/F64.parseFloat - f64.const 0.1 + i32.const 3872 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 177 + i32.const 135 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5248 - call $~lib/number/F64.parseFloat - f64.const 0.1 + i32.const 3904 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 178 + i32.const 136 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5280 - call $~lib/number/F64.parseFloat - f64.const 0.1 + i32.const 3936 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 179 + i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5312 - call $~lib/number/F64.parseFloat - f64.const 0.25 - f64.ne + i32.const 3968 + i32.const 0 + call $~lib/string/parseInt + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.eqz if i32.const 0 i32.const 1120 - i32.const 180 + i32.const 138 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5344 - call $~lib/number/F64.parseFloat - f64.const 1e3 + i32.const 4000 + i32.const 0 + call $~lib/string/parseInt + i32.const 4048 + i32.const 16 + call $~lib/string/parseInt f64.ne if i32.const 0 i32.const 1120 - i32.const 181 + i32.const 139 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5376 - call $~lib/number/F64.parseFloat - f64.const 1e-10 + i32.const 4080 + i32.const 0 + call $~lib/string/parseInt + f64.const 36893488147419103232 f64.ne if i32.const 0 i32.const 1120 - i32.const 182 + i32.const 140 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5424 - call $~lib/number/F64.parseFloat - f64.const 1e-30 + i32.const 4080 + i32.const 13 + call $~lib/string/parseInt + f64.const 5135857308667095285760 f64.ne if i32.const 0 i32.const 1120 - i32.const 183 + i32.const 141 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5472 - call $~lib/number/F64.parseFloat - f64.const 1e-323 + i32.const 4144 + i32.const 10 + call $~lib/string/parseInt + f64.const -1.e+24 f64.ne if i32.const 0 i32.const 1120 - i32.const 184 + i32.const 142 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5520 - call $~lib/number/F64.parseFloat - f64.const 0 + i32.const 4224 + i32.const 16 + call $~lib/string/parseInt + f64.const 75557863725914323419136 f64.ne if i32.const 0 i32.const 1120 - i32.const 185 + i32.const 143 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5568 - call $~lib/number/F64.parseFloat - f64.const 1.e+308 + i32.const 4288 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 186 + i32.const 144 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5600 - call $~lib/number/F64.parseFloat - f64.const inf + i32.const 4320 + i32.const 0 + call $~lib/string/parseInt + f64.const 2 f64.ne if i32.const 0 i32.const 1120 - i32.const 187 + i32.const 145 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + i32.const 4368 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 188 + i32.const 147 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5632 - call $~lib/number/F64.parseFloat - f64.const 0.1 + i32.const 4400 + i32.const 0 + call $~lib/string/parseInt + f64.const 2 f64.ne if i32.const 0 i32.const 1120 - i32.const 191 + i32.const 148 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5680 - call $~lib/number/F64.parseFloat - f64.const 1e-10 + i32.const 4448 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 192 + i32.const 149 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5728 - call $~lib/number/F64.parseFloat - f64.const 10 + i32.const 4480 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 193 + i32.const 150 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5776 - call $~lib/number/F64.parseFloat - f64.const 1 + i32.const 4512 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 194 + i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5808 - call $~lib/number/F64.parseFloat - f64.const 1 - f64.ne + i32.const 1712 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 195 + i32.const 152 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5840 - call $~lib/number/F64.parseFloat - f64.const 10 - f64.ne + i32.const 4560 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 196 + i32.const 153 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5888 - call $~lib/number/F64.parseFloat - f64.const 123456789 - f64.ne + i32.const 4592 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 197 + i32.const 154 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5936 - call $~lib/number/F64.parseFloat - f64.const 1 - f64.ne + i32.const 2400 + i32.const 37 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 198 + i32.const 155 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5984 - call $~lib/number/F64.parseFloat - f64.const 1e-60 - f64.ne + i32.const 4624 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 200 + i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6016 - call $~lib/number/F64.parseFloat - f64.const 1.e+60 - f64.ne + i32.const 4656 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 201 + i32.const 157 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6048 - call $~lib/number/F64.parseFloat - f64.const 123.4 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 + call $~lib/util/string/strtod + f32.demote_f64 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $2 + f32.eq if i32.const 0 i32.const 1120 - i32.const 204 + i32.const 158 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6080 + i32.const 4656 call $~lib/number/F64.parseFloat - f64.const 1 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 205 + i32.const 159 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6112 - call $~lib/number/F64.parseFloat - f64.const -1.1 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 + call $~lib/util/string/strtod + f32.demote_f64 + local.tee $2 + local.get $2 + f32.eq if i32.const 0 i32.const 1120 - i32.const 206 + i32.const 160 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6160 - call $~lib/number/F64.parseFloat - f64.const 10 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 + call $~lib/util/string/strtod + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 207 + i32.const 161 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6208 - call $~lib/number/F64.parseFloat - f64.const 10 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2147483647 + i32.ne if i32.const 0 i32.const 1120 - i32.const 208 + i32.const 163 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6256 - call $~lib/number/F64.parseFloat - f64.const 0.022 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store + call $~lib/util/string/strtol + i32.const 2147483647 + i32.ne if i32.const 0 i32.const 1120 - i32.const 209 + i32.const 164 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6304 - call $~lib/number/F64.parseFloat - f64.const 11 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i64.const 9223372036854775807 + i64.ne if i32.const 0 i32.const 1120 - i32.const 210 + i32.const 165 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3808 - call $~lib/number/F64.parseFloat - f64.const 0 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store + call $~lib/util/string/strtol + i64.const 9223372036854775807 + i64.ne if i32.const 0 i32.const 1120 - i32.const 211 + i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6336 + i32.const 3392 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 212 + i32.const 169 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6368 + i32.const 3456 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 213 + i32.const 170 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6400 + i32.const 4992 call $~lib/number/F64.parseFloat - f64.const 1.1 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 214 + i32.const 171 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6432 + i32.const 5024 call $~lib/number/F64.parseFloat - f64.const -1.1 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 215 + i32.const 172 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6464 + i32.const 5056 call $~lib/number/F64.parseFloat - f64.const -1.1 + f64.const 1e-05 f64.ne if i32.const 0 i32.const 1120 - i32.const 216 + i32.const 173 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6496 + i32.const 5088 call $~lib/number/F64.parseFloat - f64.const -1.1 + f64.const -1e-05 f64.ne if i32.const 0 i32.const 1120 - i32.const 217 + i32.const 174 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6528 + i32.const 5120 call $~lib/number/F64.parseFloat - f64.const -1.1 + f64.const -3e-23 f64.ne if i32.const 0 i32.const 1120 - i32.const 218 + i32.const 175 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6560 + i32.const 5168 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 3e21 f64.ne if i32.const 0 i32.const 1120 - i32.const 219 + i32.const 176 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6592 + i32.const 5216 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 220 + i32.const 177 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6624 + i32.const 5248 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 221 + i32.const 178 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6656 + i32.const 5280 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 222 + i32.const 179 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6688 + i32.const 5312 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 0.25 f64.ne if i32.const 0 i32.const 1120 - i32.const 223 + i32.const 180 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6720 + i32.const 5344 call $~lib/number/F64.parseFloat - f64.const 10 + f64.const 1e3 f64.ne if i32.const 0 i32.const 1120 - i32.const 224 + i32.const 181 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6752 + i32.const 5376 call $~lib/number/F64.parseFloat - f64.const 10 + f64.const 1e-10 f64.ne if i32.const 0 i32.const 1120 - i32.const 225 + i32.const 182 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6800 + i32.const 5424 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1e-30 f64.ne if i32.const 0 i32.const 1120 - i32.const 226 + i32.const 183 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6832 + i32.const 5472 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 1e-323 f64.ne if i32.const 0 i32.const 1120 - i32.const 227 + i32.const 184 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6864 + i32.const 5520 call $~lib/number/F64.parseFloat - f64.const 0.1 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 228 + i32.const 185 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6896 + i32.const 5568 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 1.e+308 f64.ne if i32.const 0 i32.const 1120 - i32.const 229 + i32.const 186 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6928 + i32.const 5600 call $~lib/number/F64.parseFloat - f64.const 10 + f64.const inf f64.ne if i32.const 0 i32.const 1120 - i32.const 230 + i32.const 187 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6960 + i32.const 1712 call $~lib/number/F64.parseFloat - f64.const 1 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 231 + i32.const 188 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6992 + i32.const 5632 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 232 + i32.const 191 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7024 + i32.const 5680 call $~lib/number/F64.parseFloat - f64.const 0.01 + f64.const 1e-10 f64.ne if i32.const 0 i32.const 1120 - i32.const 233 + i32.const 192 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7072 + i32.const 5728 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 10 f64.ne if i32.const 0 i32.const 1120 - i32.const 234 + i32.const 193 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7104 + i32.const 5776 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 235 + i32.const 194 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7136 + i32.const 5808 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 236 + i32.const 195 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7168 + i32.const 5840 call $~lib/number/F64.parseFloat - f64.const 0.1 + f64.const 10 f64.ne if i32.const 0 i32.const 1120 - i32.const 237 + i32.const 196 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7200 + i32.const 5888 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 123456789 f64.ne if i32.const 0 i32.const 1120 - i32.const 238 + i32.const 197 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7232 + i32.const 5936 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 239 + i32.const 198 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7264 + i32.const 5984 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 1e-60 f64.ne if i32.const 0 i32.const 1120 - i32.const 240 + i32.const 200 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7296 + i32.const 6016 call $~lib/number/F64.parseFloat - f64.const 0.1 + f64.const 1.e+60 f64.ne if i32.const 0 i32.const 1120 - i32.const 241 + i32.const 201 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7328 + i32.const 6048 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 123.4 f64.ne if i32.const 0 i32.const 1120 - i32.const 242 + i32.const 204 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7360 + i32.const 6080 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const 0 - i64.ne + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 243 + i32.const 205 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7392 + i32.const 6112 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const -9223372036854775808 - i64.ne + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 244 + i32.const 206 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7424 + i32.const 6160 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const 0 - i64.ne + f64.const 10 + f64.ne if i32.const 0 i32.const 1120 - i32.const 245 + i32.const 207 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3968 + i32.const 6208 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const -9223372036854775808 - i64.ne + f64.const 10 + f64.ne if i32.const 0 i32.const 1120 - i32.const 246 + i32.const 208 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7456 + i32.const 6256 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const -9223372036854775808 - i64.ne + f64.const 0.022 + f64.ne if i32.const 0 i32.const 1120 - i32.const 247 + i32.const 209 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 + i32.const 6304 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 11 + f64.ne if i32.const 0 i32.const 1120 - i32.const 248 + i32.const 210 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4560 + i32.const 3808 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 249 + i32.const 211 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7504 + i32.const 6336 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 250 + i32.const 212 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7536 + i32.const 6368 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 251 + i32.const 213 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7568 + i32.const 6400 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 252 + i32.const 214 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7600 + i32.const 6432 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 253 + i32.const 215 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7632 + i32.const 6464 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 254 + i32.const 216 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7664 + i32.const 6496 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 255 + i32.const 217 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7696 + i32.const 6528 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 256 + i32.const 218 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7728 + i32.const 6560 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 257 + i32.const 219 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7760 + i32.const 6592 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 258 + i32.const 220 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7792 + i32.const 6624 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 259 + i32.const 221 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7824 + i32.const 6656 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 260 + i32.const 222 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7856 + i32.const 6688 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 261 + i32.const 223 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7888 + i32.const 6720 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 10 + f64.ne if i32.const 0 i32.const 1120 - i32.const 262 + i32.const 224 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3360 + i32.const 6752 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 10 + f64.ne if i32.const 0 i32.const 1120 - i32.const 263 + i32.const 225 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7920 + i32.const 6800 call $~lib/number/F64.parseFloat - f64.const 1e22 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 264 + i32.const 226 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7952 + i32.const 6832 call $~lib/number/F64.parseFloat - f64.const 1e-22 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 265 + i32.const 227 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7984 + i32.const 6864 call $~lib/number/F64.parseFloat - f64.const 1.e+23 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 266 + i32.const 228 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8016 + i32.const 6896 call $~lib/number/F64.parseFloat - f64.const 1e-23 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 267 + i32.const 229 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8048 + i32.const 6928 call $~lib/number/F64.parseFloat - f64.const 1.e+37 + f64.const 10 f64.ne if i32.const 0 i32.const 1120 - i32.const 268 + i32.const 230 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8080 + i32.const 6960 call $~lib/number/F64.parseFloat - f64.const 1e-37 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 269 + i32.const 231 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8112 + i32.const 6992 call $~lib/number/F64.parseFloat - f64.const 1.e+38 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 270 + i32.const 232 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8144 + i32.const 7024 call $~lib/number/F64.parseFloat - f64.const 1e-38 + f64.const 0.01 f64.ne if i32.const 0 i32.const 1120 - i32.const 271 + i32.const 233 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8176 + i32.const 7072 call $~lib/number/F64.parseFloat - f64.const 2.220446049250313e-16 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 272 + i32.const 234 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8240 + i32.const 7104 call $~lib/number/F64.parseFloat - f64.const 1797693134862315708145274e284 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 273 + i32.const 235 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8320 + i32.const 7136 call $~lib/number/F64.parseFloat - f64.const 5e-324 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 274 + i32.const 236 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8352 + i32.const 7168 call $~lib/number/F64.parseFloat - f64.const 1.e+308 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 275 + i32.const 237 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8400 + i32.const 7200 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 276 + i32.const 238 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8544 + i32.const 7232 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 277 + i32.const 239 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8592 + i32.const 7264 call $~lib/number/F64.parseFloat - f64.const inf + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 278 + i32.const 240 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8640 + i32.const 7296 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 279 + i32.const 241 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8688 + i32.const 7328 call $~lib/number/F64.parseFloat - f64.const -inf + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 280 + i32.const 242 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8736 + i32.const 7360 call $~lib/number/F64.parseFloat - f64.const 0 - f64.ne + i64.reinterpret_f64 + i64.const 0 + i64.ne if i32.const 0 i32.const 1120 - i32.const 281 + i32.const 243 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8784 + i32.const 7392 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne if i32.const 0 i32.const 1120 - i32.const 282 + i32.const 244 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8832 + i32.const 7424 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + i64.reinterpret_f64 + i64.const 0 + i64.ne if i32.const 0 i32.const 1120 - i32.const 283 + i32.const 245 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8864 + i32.const 3968 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne if i32.const 0 i32.const 1120 - i32.const 284 + i32.const 246 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8912 + i32.const 7456 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne if i32.const 0 i32.const 1120 - i32.const 285 + i32.const 247 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8960 + i32.const 4592 call $~lib/number/F64.parseFloat - f64.const -inf - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 286 + i32.const 248 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9008 + i32.const 4560 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 287 + i32.const 249 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9056 + i32.const 7504 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 288 + i32.const 250 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9104 + i32.const 7536 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 @@ -14251,12 +15401,12 @@ if i32.const 0 i32.const 1120 - i32.const 289 + i32.const 251 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9136 + i32.const 7568 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 @@ -14264,12 +15414,12 @@ if i32.const 0 i32.const 1120 - i32.const 290 + i32.const 252 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9184 + i32.const 7600 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 @@ -14277,2507 +15427,2218 @@ if i32.const 0 i32.const 1120 - i32.const 291 + i32.const 253 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9232 + i32.const 7632 call $~lib/number/F64.parseFloat - f64.const 0 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 295 + i32.const 254 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9424 + i32.const 7664 call $~lib/number/F64.parseFloat - f64.const 1e-323 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 308 + i32.const 255 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9616 + i32.const 7696 call $~lib/number/F64.parseFloat - f64.const 2.225073858507202e-308 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 312 + i32.const 256 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9808 - i32.const 9968 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - i32.const 10128 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 10288 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10448 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.const 7728 call $~lib/number/F64.parseFloat - f64.const 1797693134862315708145274e284 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 315 + i32.const 257 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10608 + i32.const 7760 call $~lib/number/F64.parseFloat - f64.const 9.753531888799502e-104 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 333 + i32.const 258 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10720 + i32.const 7792 call $~lib/number/F64.parseFloat - f64.const 0.5961860348131807 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 334 + i32.const 259 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10832 + i32.const 7824 call $~lib/number/F64.parseFloat - f64.const 0.18150131692180388 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 335 + i32.const 260 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10944 + i32.const 7856 call $~lib/number/F64.parseFloat - f64.const 0.42070823575344535 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 336 + i32.const 261 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11056 + i32.const 7888 call $~lib/number/F64.parseFloat - f64.const 0.6654686306516261 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 337 + i32.const 262 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11168 + i32.const 3360 call $~lib/number/F64.parseFloat - f64.const 0.6101852922970868 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 338 + i32.const 263 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11280 + i32.const 7920 call $~lib/number/F64.parseFloat - f64.const 0.7696695208236968 + f64.const 1e22 f64.ne if i32.const 0 i32.const 1120 - i32.const 339 + i32.const 264 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11392 + i32.const 7952 call $~lib/number/F64.parseFloat - f64.const 0.25050653222286823 + f64.const 1e-22 f64.ne if i32.const 0 i32.const 1120 - i32.const 340 + i32.const 265 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11504 + i32.const 7984 call $~lib/number/F64.parseFloat - f64.const 0.2740037230228005 + f64.const 1.e+23 f64.ne if i32.const 0 i32.const 1120 - i32.const 341 + i32.const 266 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11616 + i32.const 8016 call $~lib/number/F64.parseFloat - f64.const 0.20723093500497428 + f64.const 1e-23 f64.ne if i32.const 0 i32.const 1120 - i32.const 342 + i32.const 267 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11728 + i32.const 8048 call $~lib/number/F64.parseFloat - f64.const 7.900280238081605 + f64.const 1.e+37 f64.ne if i32.const 0 i32.const 1120 - i32.const 343 + i32.const 268 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11840 + i32.const 8080 call $~lib/number/F64.parseFloat - f64.const 98.22860653737297 + f64.const 1e-37 f64.ne if i32.const 0 i32.const 1120 - i32.const 344 + i32.const 269 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 + i32.const 8112 call $~lib/number/F64.parseFloat - f64.const 746.894972319037 + f64.const 1.e+38 f64.ne if i32.const 0 i32.const 1120 - i32.const 345 + i32.const 270 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12064 + i32.const 8144 call $~lib/number/F64.parseFloat - f64.const 1630.2683202827284 + f64.const 1e-38 f64.ne if i32.const 0 i32.const 1120 - i32.const 346 + i32.const 271 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12176 + i32.const 8176 call $~lib/number/F64.parseFloat - f64.const 46371.68629719171 + f64.const 2.220446049250313e-16 f64.ne if i32.const 0 i32.const 1120 - i32.const 347 + i32.const 272 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12288 + i32.const 8240 call $~lib/number/F64.parseFloat - f64.const 653780.5944497711 + f64.const 1797693134862315708145274e284 f64.ne if i32.const 0 i32.const 1120 - i32.const 348 + i32.const 273 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12400 + i32.const 8320 call $~lib/number/F64.parseFloat - f64.const 234632.43565024371 + f64.const 5e-324 f64.ne if i32.const 0 i32.const 1120 - i32.const 349 + i32.const 274 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12512 + i32.const 8352 call $~lib/number/F64.parseFloat - f64.const 97094817.16420048 + f64.const 1.e+308 f64.ne if i32.const 0 i32.const 1120 - i32.const 350 + i32.const 275 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12624 + i32.const 8400 call $~lib/number/F64.parseFloat - f64.const 499690852.20518744 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 351 + i32.const 276 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12736 + i32.const 8544 call $~lib/number/F64.parseFloat - f64.const 7925201200557245595648 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 352 + i32.const 277 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12848 + i32.const 8592 call $~lib/number/F64.parseFloat - f64.const 6096564585983177528398588e5 + f64.const inf f64.ne if i32.const 0 i32.const 1120 - i32.const 353 + i32.const 278 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12960 + i32.const 8640 call $~lib/number/F64.parseFloat - f64.const 4800416117477028695992383e42 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 354 + i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13072 + i32.const 8688 call $~lib/number/F64.parseFloat - f64.const 8524829079817968137287277e80 + f64.const -inf f64.ne if i32.const 0 i32.const 1120 - i32.const 355 + i32.const 280 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13184 + i32.const 8736 call $~lib/number/F64.parseFloat - f64.const 3271239291709782092398754e243 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 356 + i32.const 281 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13296 + i32.const 8784 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 359 + i32.const 282 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13328 + i32.const 8832 call $~lib/number/F64.parseFloat - f64.const 0.1 + f64.const inf f64.ne if i32.const 0 i32.const 1120 - i32.const 360 + i32.const 283 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1808 - i32.const 13360 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 13392 - call $~lib/string/String.__eq - i32.eqz + i32.const 8864 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 364 - i32.const 3 + i32.const 284 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1808 - call $~lib/string/String.__ne - i32.eqz + i32.const 8912 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 365 - i32.const 3 + i32.const 285 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + i32.const 8960 + call $~lib/number/F64.parseFloat + f64.const -inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 367 + i32.const 286 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + i32.const 9008 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 369 + i32.const 287 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1712 - i32.const 0 - call $~lib/string/String.__ne - i32.eqz + i32.const 9056 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 371 + i32.const 288 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - i32.const 1712 - call $~lib/string/String.__ne - i32.eqz + i32.const 9104 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 373 + i32.const 289 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 13360 - call $~lib/string/String.__ne - i32.eqz + i32.const 9136 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 375 + i32.const 290 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz + i32.const 9184 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 376 + i32.const 291 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13424 - i32.const 13456 - call $~lib/string/String.__ne - i32.eqz + i32.const 9232 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 378 + i32.const 295 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13424 - i32.const 13424 - call $~lib/string/String.__eq - i32.eqz + i32.const 9424 + call $~lib/number/F64.parseFloat + f64.const 1e-323 + f64.ne if i32.const 0 i32.const 1120 - i32.const 379 + i32.const 308 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13488 - i32.const 13520 - call $~lib/string/String.__ne - i32.eqz + i32.const 9616 + call $~lib/number/F64.parseFloat + f64.const 2.225073858507202e-308 + f64.ne if i32.const 0 i32.const 1120 - i32.const 381 + i32.const 312 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13552 - i32.const 13584 - call $~lib/string/String.__ne - i32.eqz + i32.const 9808 + i32.const 9968 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 10128 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 10288 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10448 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/number/F64.parseFloat + f64.const 1797693134862315708145274e284 + f64.ne if i32.const 0 i32.const 1120 - i32.const 383 + i32.const 315 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13616 - i32.const 13616 - call $~lib/string/String.__eq - i32.eqz + i32.const 10608 + call $~lib/number/F64.parseFloat + f64.const 9.753531888799502e-104 + f64.ne if i32.const 0 i32.const 1120 - i32.const 384 + i32.const 333 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13616 - i32.const 13664 - call $~lib/string/String.__ne - i32.eqz + i32.const 10720 + call $~lib/number/F64.parseFloat + f64.const 0.5961860348131807 + f64.ne if i32.const 0 i32.const 1120 - i32.const 386 + i32.const 334 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13712 - i32.const 13760 - call $~lib/string/String.__ne - i32.eqz + i32.const 10832 + call $~lib/number/F64.parseFloat + f64.const 0.18150131692180388 + f64.ne if i32.const 0 i32.const 1120 - i32.const 388 + i32.const 335 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13360 - i32.const 1808 - call $~lib/string/String.__gt - i32.eqz + i32.const 10944 + call $~lib/number/F64.parseFloat + f64.const 0.42070823575344535 + f64.ne if i32.const 0 i32.const 1120 - i32.const 390 + i32.const 336 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 1808 - call $~lib/string/String.__gt - i32.eqz + i32.const 11056 + call $~lib/number/F64.parseFloat + f64.const 0.6654686306516261 + f64.ne if i32.const 0 i32.const 1120 - i32.const 391 + i32.const 337 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 13840 - call $~lib/string/String.__gte - i32.eqz + i32.const 11168 + call $~lib/number/F64.parseFloat + f64.const 0.6101852922970868 + f64.ne if i32.const 0 i32.const 1120 - i32.const 392 + i32.const 338 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 13392 - call $~lib/string/String.__gt - i32.eqz + i32.const 11280 + call $~lib/number/F64.parseFloat + f64.const 0.7696695208236968 + f64.ne if i32.const 0 i32.const 1120 - i32.const 393 + i32.const 339 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 13392 - call $~lib/string/String.__lt + i32.const 11392 + call $~lib/number/F64.parseFloat + f64.const 0.25050653222286823 + f64.ne if i32.const 0 i32.const 1120 - i32.const 394 + i32.const 340 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - call $~lib/string/String.__gt - i32.eqz + i32.const 11504 + call $~lib/number/F64.parseFloat + f64.const 0.2740037230228005 + f64.ne if i32.const 0 i32.const 1120 - i32.const 396 + i32.const 341 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2336 - call $~lib/string/String.__lt - i32.eqz + i32.const 11616 + call $~lib/number/F64.parseFloat + f64.const 0.20723093500497428 + f64.ne if i32.const 0 i32.const 1120 - i32.const 397 + i32.const 342 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - call $~lib/string/String.__gte - i32.eqz + i32.const 11728 + call $~lib/number/F64.parseFloat + f64.const 7.900280238081605 + f64.ne if i32.const 0 i32.const 1120 - i32.const 398 + i32.const 343 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2336 - call $~lib/string/String.__lte - i32.eqz + i32.const 11840 + call $~lib/number/F64.parseFloat + f64.const 98.22860653737297 + f64.ne if i32.const 0 i32.const 1120 - i32.const 399 + i32.const 344 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - call $~lib/string/String.__lt + i32.const 11952 + call $~lib/number/F64.parseFloat + f64.const 746.894972319037 + f64.ne if i32.const 0 i32.const 1120 - i32.const 400 + i32.const 345 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2336 - call $~lib/string/String.__gt + i32.const 12064 + call $~lib/number/F64.parseFloat + f64.const 1630.2683202827284 + f64.ne if i32.const 0 i32.const 1120 - i32.const 401 + i32.const 346 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__lt + i32.const 12176 + call $~lib/number/F64.parseFloat + f64.const 46371.68629719171 + f64.ne if i32.const 0 i32.const 1120 - i32.const 402 + i32.const 347 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__gt + i32.const 12288 + call $~lib/number/F64.parseFloat + f64.const 653780.5944497711 + f64.ne if i32.const 0 i32.const 1120 - i32.const 403 + i32.const 348 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__gte - i32.eqz + i32.const 12400 + call $~lib/number/F64.parseFloat + f64.const 234632.43565024371 + f64.ne if i32.const 0 i32.const 1120 - i32.const 404 + i32.const 349 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__lte - i32.eqz + i32.const 12512 + call $~lib/number/F64.parseFloat + f64.const 97094817.16420048 + f64.ne if i32.const 0 i32.const 1120 - i32.const 405 + i32.const 350 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - i32.const 13872 - call $~lib/string/String.__lt - i32.eqz + i32.const 12624 + call $~lib/number/F64.parseFloat + f64.const 499690852.20518744 + f64.ne if i32.const 0 i32.const 1120 - i32.const 407 + i32.const 351 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 3456 - call $~lib/string/String.__gt - i32.eqz + i32.const 12736 + call $~lib/number/F64.parseFloat + f64.const 7925201200557245595648 + f64.ne if i32.const 0 i32.const 1120 - i32.const 408 + i32.const 352 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13872 - call $~lib/string/String.__lt + i32.const 12848 + call $~lib/number/F64.parseFloat + f64.const 6096564585983177528398588e5 + f64.ne if i32.const 0 i32.const 1120 - i32.const 409 + i32.const 353 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13904 - call $~lib/string/String.__gt + i32.const 12960 + call $~lib/number/F64.parseFloat + f64.const 4800416117477028695992383e42 + f64.ne if i32.const 0 i32.const 1120 - i32.const 410 + i32.const 354 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13872 - call $~lib/string/String.__gt - i32.eqz + i32.const 13072 + call $~lib/number/F64.parseFloat + f64.const 8524829079817968137287277e80 + f64.ne if i32.const 0 i32.const 1120 - i32.const 411 + i32.const 355 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13904 - call $~lib/string/String.__lt - i32.eqz + i32.const 13184 + call $~lib/number/F64.parseFloat + f64.const 3271239291709782092398754e243 + f64.ne if i32.const 0 i32.const 1120 - i32.const 412 + i32.const 356 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__lt + i32.const 13296 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 413 + i32.const 359 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__gt + i32.const 13328 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 414 + i32.const 360 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__lte + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.const 13360 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13392 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 415 - i32.const 1 + i32.const 364 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__gte + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 416 - i32.const 1 + i32.const 365 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13936 - call $~lib/string/String.__gte + i32.const 1712 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 417 + i32.const 367 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13936 - i32.const 13872 - call $~lib/string/String.__gte + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 0 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 418 + i32.const 369 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13936 - call $~lib/string/String.__lte + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1712 + i32.const 0 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 419 + i32.const 371 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - i32.const 3456 - call $~lib/string/String.__eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 1712 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 420 + i32.const 373 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__eq + i32.const 1808 + i32.const 13360 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 421 + i32.const 375 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 - i32.const 2400 + i32.const 1808 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 422 + i32.const 376 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 - i32.const 13968 + i32.const 13424 + i32.const 13456 call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 424 + i32.const 378 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14000 - i32.const 14000 + i32.const 13424 + i32.const 13424 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 425 + i32.const 379 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14032 - i32.const 14000 + i32.const 13488 + i32.const 13520 call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 427 + i32.const 381 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 65377 - call $~lib/string/String.fromCodePoint - local.tee $4 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 55296 - call $~lib/string/String.fromCodePoint - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - i32.const 56322 - call $~lib/string/String.fromCodePoint - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $6 - local.get $0 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=68 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - call $~lib/string/String.__gt + i32.const 13552 + i32.const 13584 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 432 - i32.const 3 + i32.const 383 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2396 - i32.load - i32.const 1 - i32.shr_u - i32.const 3 - i32.ne + i32.const 13616 + i32.const 13616 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 435 + i32.const 384 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 100 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq + i32.const 13616 + i32.const 13664 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13712 + i32.const 13760 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 437 + i32.const 388 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 13360 i32.const 1808 - i32.const 0 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 438 + i32.const 390 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 13808 i32.const 1808 - i32.const 1 - call $~lib/string/String#repeat - 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 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 439 + i32.const 391 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 2 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.const 13808 i32.const 13840 - call $~lib/string/String.__eq + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 440 + i32.const 392 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 3 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14112 - call $~lib/string/String.__eq + i32.const 13808 + i32.const 13392 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 441 + i32.const 393 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 13808 i32.const 13392 - i32.const 4 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14144 - call $~lib/string/String.__eq + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 1712 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 442 + i32.const 396 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 5 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14192 - call $~lib/string/String.__eq + i32.const 1712 + i32.const 2336 + call $~lib/string/String.__lt i32.eqz if i32.const 0 i32.const 1120 - i32.const 443 + i32.const 397 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 6 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14224 - call $~lib/string/String.__eq + i32.const 2336 + i32.const 1712 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 444 + i32.const 398 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 7 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14256 - call $~lib/string/String.__eq + i32.const 1712 + i32.const 2336 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 445 + i32.const 399 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 2336 i32.const 1712 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1712 + i32.const 2336 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1712 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + call $~lib/string/String.__lt if i32.const 0 i32.const 1120 - i32.const 447 + i32.const 402 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 i32.const 1712 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4592 - call $~lib/string/String.__eq - i32.eqz + call $~lib/string/String.__gt if i32.const 0 i32.const 1120 - i32.const 448 + i32.const 403 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 4592 i32.const 1712 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 i32.const 1712 - call $~lib/string/String.__eq + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 449 + i32.const 404 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 i32.const 1712 i32.const 1712 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4592 - call $~lib/string/String.__eq + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 450 + i32.const 405 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 4560 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq + i32.const 3456 + i32.const 13872 + call $~lib/string/String.__lt i32.eqz if i32.const 0 i32.const 1120 - i32.const 451 + i32.const 407 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2336 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4592 - call $~lib/string/String.__eq + i32.const 13872 + i32.const 3456 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 452 + i32.const 408 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2912 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq - i32.eqz + i32.const 13904 + i32.const 13872 + call $~lib/string/String.__lt if i32.const 0 i32.const 1120 - i32.const 453 + i32.const 409 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13872 + i32.const 13904 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 410 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 13392 - i32.const 13392 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq + i32.const 13904 + i32.const 13872 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 454 + i32.const 411 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14304 - i32.const 4560 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14336 - call $~lib/string/String.__eq + i32.const 13872 + i32.const 13904 + call $~lib/string/String.__lt i32.eqz if i32.const 0 i32.const 1120 - i32.const 455 + i32.const 412 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14368 - call $~lib/string/String.__eq - i32.eqz + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__lt if i32.const 0 i32.const 1120 - i32.const 456 + i32.const 413 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14400 - i32.const 14432 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14368 - call $~lib/string/String.__eq - i32.eqz + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__gt if i32.const 0 i32.const 1120 - i32.const 457 + i32.const 414 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 14464 - i32.const 14496 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14528 - call $~lib/string/String.__eq + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 458 + i32.const 415 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 14464 - i32.const 1712 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 13392 - call $~lib/string/String.__eq + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 459 + i32.const 416 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 2336 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq - i32.eqz + i32.const 13872 + i32.const 13936 + call $~lib/string/String.__gte if i32.const 0 i32.const 1120 - i32.const 461 + i32.const 417 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 4560 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq + i32.const 13936 + i32.const 13872 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 462 + i32.const 418 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2544 - i32.const 2336 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14496 - call $~lib/string/String.__eq + i32.const 13872 + i32.const 13936 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 464 + i32.const 419 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14560 - i32.const 2336 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14608 + i32.const 3456 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 465 + i32.const 420 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2544 - i32.const 13392 - i32.const 13392 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2544 + i32.const 13904 + i32.const 13904 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 466 + i32.const 421 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14640 - i32.const 1808 - i32.const 14608 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14688 + i32.const 2400 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 467 + i32.const 422 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2544 - i32.const 13392 - i32.const 14496 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14736 - call $~lib/string/String.__eq + i32.const 2400 + i32.const 13968 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 468 + i32.const 424 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14768 - i32.const 14800 - i32.const 14496 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14832 + i32.const 14000 + i32.const 14000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 469 + i32.const 425 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2912 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq + i32.const 14032 + i32.const 14000 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 470 + i32.const 427 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 - i32.const 14864 - i32.const 14496 - call $~lib/string/String#replaceAll + global.get $~lib/memory/__stack_pointer + i32.const 65377 + call $~lib/string/String.fromCodePoint + local.tee $4 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 55296 + call $~lib/string/String.fromCodePoint + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + i32.const 56322 + call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $6 + local.get $0 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2912 - call $~lib/string/String.__eq + i32.store offset=4 + local.get $4 + local.get $0 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 471 - i32.const 1 + i32.const 432 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 14896 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14928 - call $~lib/string/String.__eq - i32.eqz + i32.const 2396 + i32.load + i32.const 1 + i32.shr_u + i32.const 3 + i32.ne if i32.const 0 i32.const 1120 - i32.const 472 + i32.const 435 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13392 - i32.const 13392 - i32.const 4592 - call $~lib/string/String#replaceAll + i32.const 1712 + i32.const 100 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 473 + i32.const 437 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14304 - i32.const 4560 - i32.const 4592 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 0 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14960 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 474 + i32.const 438 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 1712 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 1 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 476 + i32.const 439 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 4592 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 2 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 13840 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 477 + i32.const 440 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 4592 - i32.const 1712 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 3 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 14112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 478 + i32.const 441 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 1712 - i32.const 1712 - call $~lib/string/String#replaceAll + i32.const 13392 + i32.const 4 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 14144 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 479 + i32.const 442 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2336 - i32.const 4560 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 5 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4560 + i32.const 14192 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 480 + i32.const 443 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2816 - i32.const 4560 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 6 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 14224 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 481 + i32.const 444 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - i32.const 4592 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 7 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14992 + i32.const 14256 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 482 + i32.const 445 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 i32.const 1712 i32.const 1712 - call $~lib/string/String#replaceAll + i32.const 1712 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 483 + i32.const 447 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15040 - i32.const 1808 - i32.const 15072 - call $~lib/string/String#replaceAll + i32.const 1712 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15104 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 486 + i32.const 448 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13392 - i32.const 13392 - i32.const 15152 - call $~lib/string/String#replaceAll + i32.const 4592 + i32.const 4592 + i32.const 1712 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15152 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 487 + i32.const 449 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14112 - i32.const 1808 - i32.const 15184 - call $~lib/string/String#replaceAll + i32.const 4592 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15216 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 488 + i32.const 450 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14112 - i32.const 13840 - i32.const 15072 - call $~lib/string/String#replaceAll + i32.const 2336 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15264 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 489 + i32.const 451 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15296 - global.set $std/string/str - global.get $~lib/memory/__stack_pointer - i32.const 15296 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - i32.const 15296 - i32.const 0 - call $~lib/string/String#slice@varargs + i32.const 2336 + i32.const 2336 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 493 + i32.const 452 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/string/String#slice@varargs + i32.const 2336 + i32.const 2912 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15344 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 494 + i32.const 453 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -5 - call $~lib/string/String#slice@varargs + i32.const 2336 + i32.const 13392 + i32.const 13392 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15376 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 - i32.const 495 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 7 - call $~lib/string/String#slice + i32.const 1120 + i32.const 454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14304 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15408 + i32.const 14336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 496 + i32.const 455 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -11 - i32.const -6 - call $~lib/string/String#slice + i32.const 2336 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15440 + i32.const 14368 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 497 + i32.const 456 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 3 - call $~lib/string/String#slice + i32.const 14400 + i32.const 14432 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 14368 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 498 + i32.const 457 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const -1 - call $~lib/string/String#slice + i32.const 2336 + i32.const 14464 + i32.const 14496 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15472 + i32.const 14528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 499 + i32.const 458 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/string/String#substr@varargs + i32.const 2336 + i32.const 14464 + i32.const 1712 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 13392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 501 + i32.const 459 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/string/String#substr@varargs + i32.const 1712 + i32.const 1712 + i32.const 2336 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15344 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 502 + i32.const 461 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -5 - call $~lib/string/String#substr@varargs + i32.const 2336 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15376 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 503 + i32.const 462 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 7 - call $~lib/string/String#substr + i32.const 2544 + i32.const 2336 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15520 + i32.const 14496 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 504 + i32.const 464 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -11 - i32.const -6 - call $~lib/string/String#substr + i32.const 14560 + i32.const 2336 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 505 + i32.const 465 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 3 - call $~lib/string/String#substr + i32.const 2544 + i32.const 13392 + i32.const 13392 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15568 + i32.const 2544 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 506 + i32.const 466 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const -1 - call $~lib/string/String#substr + i32.const 14640 + i32.const 1808 + i32.const 14608 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 14688 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 507 + i32.const 467 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 100 - call $~lib/string/String#substr + i32.const 2544 + i32.const 13392 + i32.const 14496 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 14736 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 508 + i32.const 468 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 4 - call $~lib/string/String#substr + i32.const 14768 + i32.const 14800 + i32.const 14496 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15600 + i32.const 14832 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 509 + i32.const 469 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const -3 - call $~lib/string/String#substr + i32.const 2336 + i32.const 2912 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 510 + i32.const 470 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/string/String#substring@varargs + i32.const 2912 + i32.const 14864 + i32.const 14496 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 2912 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 512 + i32.const 471 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/string/String#substring@varargs + i32.const 2336 + i32.const 14896 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 14928 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 513 + i32.const 472 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -5 - call $~lib/string/String#substring@varargs + i32.const 13392 + i32.const 13392 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 514 + i32.const 473 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 7 - call $~lib/string/String#substring + i32.const 14304 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15408 + i32.const 14960 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 515 + i32.const 474 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -11 - i32.const -6 - call $~lib/string/String#substring + i32.const 1712 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -16789,43 +17650,35 @@ if i32.const 0 i32.const 1120 - i32.const 516 + i32.const 476 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 3 - call $~lib/string/String#substring + i32.const 1712 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15632 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 517 + i32.const 477 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const -1 - call $~lib/string/String#substring + i32.const 4592 + i32.const 4592 + i32.const 1712 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -16837,1850 +17690,1913 @@ if i32.const 0 i32.const 1120 - i32.const 518 + i32.const 478 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 100 - call $~lib/string/String#substring + i32.const 4592 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 519 + i32.const 479 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 4 - call $~lib/string/String#substring + i32.const 2336 + i32.const 2336 + i32.const 4560 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 4560 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 520 + i32.const 480 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const -3 - call $~lib/string/String#substring + i32.const 2336 + i32.const 2816 + i32.const 4560 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2912 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 521 + i32.const 481 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 2336 i32.const 1712 - i32.const 0 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 14992 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 527 - i32.const 3 + i32.const 482 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 2336 i32.const 1712 i32.const 1712 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 529 - i32.const 3 + i32.const 483 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.const 2624 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 15040 + i32.const 1808 + i32.const 15072 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15104 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 531 - i32.const 3 + i32.const 486 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 7632 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 13392 + i32.const 13392 + i32.const 15152 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 15840 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.store + local.get $0 + i32.const 15152 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 533 - i32.const 3 + i32.const 487 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 2624 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 14112 + i32.const 1808 + i32.const 15184 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else + i32.const 15216 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const 1120 + i32.const 488 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end + i32.const 14112 + i32.const 13840 + i32.const 15072 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15264 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 535 - i32.const 3 + i32.const 489 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 15296 + global.set $std/string/str + global.get $~lib/memory/__stack_pointer + i32.const 15296 + i32.store offset=4 i32.const 1 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 15872 - i32.const 15920 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 15296 + i32.const 0 + call $~lib/string/String#slice@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15296 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 537 - i32.const 3 + i32.const 493 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15952 - i32.const 2624 - call $~lib/string/String#split@varargs + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/string/String#slice@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + local.get $0 + i32.const 15344 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 539 - i32.const 3 + i32.const 494 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15984 - i32.const 2624 - call $~lib/string/String#split@varargs + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -5 + call $~lib/string/String#slice@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15376 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 541 - i32.const 3 + i32.const 495 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 16016 - i32.const 2624 - call $~lib/string/String#split@varargs + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#slice + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15408 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 543 - i32.const 3 + i32.const 496 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - call $~lib/string/String#split@varargs + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#slice + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + local.get $0 + i32.const 15440 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 545 - i32.const 3 + i32.const 497 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - i32.const 0 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#slice + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 547 - i32.const 3 + i32.const 498 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - i32.const 1 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/string/String#slice + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - 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 - else - i32.const 0 - end + i32.const 15472 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 549 - i32.const 3 + i32.const 499 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 2624 - i32.const 1 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/string/String#substr@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - 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 - else - i32.const 0 - end + i32.const 15296 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 551 - i32.const 3 + i32.const 501 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - i32.const 4 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/string/String#substr@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15344 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 553 - i32.const 3 + i32.const 502 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - i32.const -1 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -5 + call $~lib/string/String#substr@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else + i32.const 15376 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const 1120 + i32.const 503 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15520 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 555 - i32.const 3 + i32.const 504 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 2624 - i32.const -1 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#substr + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const 1120 + i32.const 505 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15568 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 557 - i32.const 3 + i32.const 506 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 10 - call $~lib/util/number/itoa32 + i32.const -1 + call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 562 + i32.const 507 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 100 + call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 563 + i32.const 508 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17792 + i32.const 15600 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 564 + i32.const 509 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const -3 + call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17824 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 565 + i32.const 510 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/string/String#substring@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2400 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 566 + i32.const 512 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1000 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/string/String#substring@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17856 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 567 + i32.const 513 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -5 + call $~lib/string/String#substring@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14000 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 568 + i32.const 514 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17888 + i32.const 15408 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 569 + i32.const 515 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17920 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 570 + i32.const 516 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1111111 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17952 + i32.const 15632 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 571 + i32.const 517 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234567 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18000 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 572 + i32.const 518 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345678 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 100 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18048 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 573 + i32.const 519 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456789 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18096 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 574 + i32.const 520 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483646 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const -3 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18144 + i32.const 2912 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 575 + i32.const 521 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18192 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 576 - i32.const 1 + i32.const 527 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.const 1712 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18240 - call $~lib/string/String.__eq - i32.eqz + call $~lib/array/Array#get:length if i32.const 0 i32.const 1120 - i32.const 577 - i32.const 1 + i32.const 529 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18288 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 578 - i32.const 1 + i32.const 531 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -128 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 7632 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18320 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15840 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 580 - i32.const 1 + i32.const 533 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -32768 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18352 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 581 - i32.const 1 + i32.const 535 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15872 + i32.const 15920 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18240 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 582 - i32.const 1 + i32.const 537 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15952 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 584 - i32.const 1 + i32.const 539 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1000 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15984 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18384 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1120 - i32.const 585 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 end - i32.const 2147483647 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 18192 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 586 - i32.const 1 + i32.const 541 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 16016 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18416 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1120 - i32.const 587 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 end - i32.const -1 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 18464 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 588 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 0 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3392 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 592 - i32.const 1 + i32.const 543 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1120 - i32.const 593 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 end - i32.const 8 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 17792 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 594 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 12 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 595 - i32.const 1 + i32.const 545 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 123 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const 0 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18512 - call $~lib/string/String.__eq - i32.eqz + call $~lib/array/Array#get:length if i32.const 0 i32.const 1120 - i32.const 596 - i32.const 1 + i32.const 547 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1234 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const 1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18544 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + 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 + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 597 - i32.const 1 + i32.const 549 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12345 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 2624 + i32.const 1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18576 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + 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 + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 598 - i32.const 1 + i32.const 551 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 123456 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const 4 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18608 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 599 - i32.const 1 + i32.const 553 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1111111 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const -1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18640 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 600 - i32.const 1 + i32.const 555 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1234567 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 2624 + i32.const -1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18672 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 601 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 12345678 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 18704 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 602 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 123456789 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 18736 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 603 - i32.const 1 + i32.const 557 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 2147483646 - i32.const 16 - call $~lib/util/number/utoa32 + i32.const 0 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18784 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 604 + i32.const 562 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 16 - call $~lib/util/number/utoa32 + i32.const 1 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18832 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 605 + i32.const 563 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/utoa32 + i32.const 8 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18880 + i32.const 17792 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 606 + i32.const 564 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 16 - call $~lib/util/number/utoa32 + i32.const 12 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18928 + i32.const 17824 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 607 + i32.const 565 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 16 + i32.const 123 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 609 + i32.const 566 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -4096 - i32.const 16 + i32.const -1000 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer @@ -18693,2615 +19609,2652 @@ if i32.const 0 i32.const 1120 - i32.const 610 + i32.const 567 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 16 + i32.const 1234 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18832 + i32.const 14000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 611 + i32.const 568 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483647 - i32.const 16 + i32.const 12345 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18976 + i32.const 17888 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 612 + i32.const 569 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -268435455 - i32.const 16 + i32.const 123456 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19024 + i32.const 17920 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 613 + i32.const 570 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 + i32.const 1111111 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19072 + i32.const 17952 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 614 + i32.const 571 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 + i32.const 1234567 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19072 + i32.const 18000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 615 + i32.const 572 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const 12345678 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 18048 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 619 + i32.const 573 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const 123456789 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 18096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 620 + i32.const 574 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const 2147483646 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 13904 + i32.const 18144 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 621 + i32.const 575 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const 2147483647 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19120 + i32.const 18192 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 622 + i32.const 576 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19152 + i32.const 18240 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 623 + i32.const 577 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 29 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -1 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19184 + i32.const 18288 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 624 + i32.const 578 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 59 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -128 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19216 + i32.const 18320 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 625 + i32.const 580 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4095 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -32768 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19248 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 626 + i32.const 581 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 33554431 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19296 + i32.const 18240 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 627 + i32.const 582 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -12 - i32.const 2 + i32.const 0 + i32.const 10 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19376 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 628 + i32.const 584 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -4 - i32.const 2 + i32.const 1000 + i32.const 10 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19472 + i32.const 18384 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 629 + i32.const 585 i32.const 1 call $~lib/builtins/abort unreachable - end - i32.const -2 - i32.const 2 + end + i32.const 2147483647 + i32.const 10 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19568 + i32.const 18192 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 630 + i32.const 586 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 2 + i32.const -2147483648 + i32.const 10 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19664 + i32.const 18416 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 631 + i32.const 587 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2047 - i32.const 2 - call $~lib/util/number/itoa32 + i32.const -1 + i32.const 10 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19760 + i32.const 18464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 633 + i32.const 588 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 3 + i32.const 0 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19808 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 637 + i32.const 592 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 4 + i32.const 1 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19872 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 638 + i32.const 593 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 5 + i32.const 8 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19936 + i32.const 17792 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 639 + i32.const 594 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 8 + i32.const 12 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19984 + i32.const 14464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 640 + i32.const 595 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 11 + i32.const 123 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20032 + i32.const 18512 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 641 + i32.const 596 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 15 + i32.const 1234 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20080 + i32.const 18544 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 642 + i32.const 597 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 17 + i32.const 12345 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20128 + i32.const 18576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 643 + i32.const 598 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 21 + i32.const 123456 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20176 + i32.const 18608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 644 + i32.const 599 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 27 + i32.const 1111111 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20224 + i32.const 18640 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 645 + i32.const 600 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 32 + i32.const 1234567 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20272 + i32.const 18672 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 646 + i32.const 601 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 36 + i32.const 12345678 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20320 + i32.const 18704 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 647 + i32.const 602 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 123456789 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 18736 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 651 + i32.const 603 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 2147483646 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17824 + i32.const 18784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 652 + i32.const 604 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 123 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 2147483647 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2400 + i32.const 18832 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 653 + i32.const 605 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14000 + i32.const 18880 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 654 + i32.const 606 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12345 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17888 + i32.const 18928 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 655 + i32.const 607 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 123456 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 0 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17920 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 656 + i32.const 609 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234567 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -4096 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18000 + i32.const 17856 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 657 + i32.const 610 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 99999999 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 2147483647 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20368 + i32.const 18832 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 658 + i32.const 611 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 100000000 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -2147483647 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20416 + i32.const 18976 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 659 + i32.const 612 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -268435455 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18464 + i32.const 19024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 660 + i32.const 613 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20464 + i32.const 19072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 661 + i32.const 614 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20512 + i32.const 19072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 662 + i32.const 615 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 0 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20560 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 663 + i32.const 619 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 8687194767350 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 1 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20608 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 664 + i32.const 620 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 86871947673501 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 3 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20656 + i32.const 13904 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 665 + i32.const 621 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 7 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20704 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 666 + i32.const 622 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 14 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20768 + i32.const 19152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 667 + i32.const 623 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 19999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 29 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20832 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 668 + i32.const 624 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 129999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 59 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20896 + i32.const 19216 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 669 + i32.const 625 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1239999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 4095 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20960 + i32.const 19248 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 670 + i32.const 626 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 33554431 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21024 + i32.const 19296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 671 + i32.const 627 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -12 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 19376 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 673 + i32.const 628 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1234 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -4 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21088 + i32.const 19472 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 674 + i32.const 629 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -2 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18464 + i32.const 19568 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 675 + i32.const 630 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20464 + i32.const 19664 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 676 + i32.const 631 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -4294967295 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -2047 + i32.const 2 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21120 + i32.const 19760 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 677 + i32.const 633 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 3 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20512 + i32.const 19808 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 678 + i32.const 637 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -68719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 4 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21168 + i32.const 19872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 679 + i32.const 638 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -868719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 5 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21216 + i32.const 19936 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 680 + i32.const 639 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 8 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21264 + i32.const 19984 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 681 + i32.const 640 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -19999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 11 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21328 + i32.const 20032 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 682 + i32.const 641 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9223372036854775807 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 15 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21392 + i32.const 20080 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 683 + i32.const 642 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 17 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21456 + i32.const 20128 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 684 + i32.const 643 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 16 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 21 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 20176 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 688 + i32.const 644 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1 - i32.const 16 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 27 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 20224 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 689 + i32.const 645 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12 - i32.const 16 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 32 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 20272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 690 + i32.const 646 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234 - i32.const 16 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 36 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18544 + i32.const 20320 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 691 + i32.const 647 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1111111 - i32.const 16 + i64.const 0 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18640 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 692 + i32.const 651 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 8589934591 - i32.const 16 + i64.const 12 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21520 + i32.const 17824 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 693 + i32.const 652 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 5942249508321 - i32.const 16 + i64.const 123 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21568 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 694 + i32.const 653 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 76310993685985 - i32.const 16 + i64.const 1234 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21616 + i32.const 14000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 695 + i32.const 654 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 920735923817967 - i32.const 16 + i64.const 12345 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21664 + i32.const 17888 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 696 + i32.const 655 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9927935178558959 - i32.const 16 + i64.const 123456 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21712 + i32.const 17920 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 697 + i32.const 656 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 81985529216486895 - i32.const 16 + i64.const 1234567 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21760 + i32.const 18000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 698 + i32.const 657 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1311768467463790320 - i32.const 16 + i64.const 99999999 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21824 + i32.const 20368 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 699 + i32.const 658 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9223372036854775807 - i32.const 16 + i64.const 100000000 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21888 + i32.const 20416 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 700 + i32.const 659 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 16 + i64.const 4294967295 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21952 + i32.const 18464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 701 + i32.const 660 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775807 - i32.const 16 - call $~lib/util/number/itoa64 + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22016 + i32.const 20464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 703 + i32.const 661 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22080 + i32.const 20512 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 704 + i32.const 662 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 + i64.const 868719476735 + i32.const 10 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22080 + i32.const 20560 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 705 + i32.const 663 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 2 + i64.const 8687194767350 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 20608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 709 + i32.const 664 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1 - i32.const 2 + i64.const 86871947673501 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 20656 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 710 + i32.const 665 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 7 - i32.const 2 + i64.const 999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19120 + i32.const 20704 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 711 + i32.const 666 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 14 - i32.const 2 + i64.const 9999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19152 + i32.const 20768 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 712 + i32.const 667 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 59 - i32.const 2 + i64.const 19999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19216 + i32.const 20832 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 713 + i32.const 668 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4095 - i32.const 2 + i64.const 129999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19248 + i32.const 20896 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 714 + i32.const 669 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 2 + i64.const 1239999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19664 + i32.const 20960 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 715 + i32.const 670 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 562949953421311 - i32.const 2 + i64.const -1 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22144 + i32.const 21024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 716 + i32.const 671 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 2 - call $~lib/util/number/utoa64 + i64.const 0 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22272 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 717 + i32.const 673 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -8589934591 - i32.const 2 + i64.const -1234 + i32.const 10 call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22432 + i32.const 21088 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 719 + i32.const 674 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 3 - call $~lib/util/number/utoa64 + i64.const 4294967295 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22528 + i32.const 18464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 723 + i32.const 675 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 4 - call $~lib/util/number/utoa64 + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22640 + i32.const 20464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 724 + i32.const 676 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 5 - call $~lib/util/number/utoa64 + i64.const -4294967295 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22736 + i32.const 21120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 725 + i32.const 677 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 8 - call $~lib/util/number/utoa64 + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22816 + i32.const 20512 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 726 + i32.const 678 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 11 - call $~lib/util/number/utoa64 + i64.const -68719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22880 + i32.const 21168 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 727 + i32.const 679 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 15 - call $~lib/util/number/utoa64 + i64.const -868719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22944 + i32.const 21216 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 728 + i32.const 680 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 17 - call $~lib/util/number/utoa64 + i64.const -999868719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23008 + i32.const 21264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 729 + i32.const 681 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 21 - call $~lib/util/number/utoa64 + i64.const -19999868719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23072 + i32.const 21328 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 730 + i32.const 682 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 27 - call $~lib/util/number/utoa64 + i64.const 9223372036854775807 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23136 + i32.const 21392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 731 + i32.const 683 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 32 - call $~lib/util/number/utoa64 + i64.const -9223372036854775808 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23184 + i32.const 21456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 732 + i32.const 684 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 36 + i64.const 0 + i32.const 16 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23232 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 733 + i32.const 688 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0 - call $~lib/util/number/dtoa + i64.const 1 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23280 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 736 + i32.const 689 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -0 - call $~lib/util/number/dtoa + i64.const 12 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23280 + i32.const 14464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 737 + i32.const 690 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const nan:0x8000000000000 - call $~lib/util/number/dtoa + i64.const 1234 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 7696 + i32.const 18544 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 738 + i32.const 691 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const inf - call $~lib/util/number/dtoa + i64.const 1111111 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23312 + i32.const 18640 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 739 + i32.const 692 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -inf - call $~lib/util/number/dtoa + i64.const 8589934591 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8960 + i32.const 21520 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 740 + i32.const 693 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.220446049250313e-16 - call $~lib/util/number/dtoa + i64.const 5942249508321 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8176 + i32.const 21568 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 741 + i32.const 694 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -2.220446049250313e-16 - call $~lib/util/number/dtoa + i64.const 76310993685985 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24336 + i32.const 21616 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 742 + i32.const 695 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1797693134862315708145274e284 - call $~lib/util/number/dtoa + i64.const 920735923817967 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8240 + i32.const 21664 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 743 + i32.const 696 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1797693134862315708145274e284 - call $~lib/util/number/dtoa + i64.const 9927935178558959 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24400 + i32.const 21712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 744 + i32.const 697 i32.const 1 call $~lib/builtins/abort unreachable end - f32.const 1.1920928955078125e-07 - call $~lib/util/number/dtoa + i64.const 81985529216486895 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24480 + i32.const 21760 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 745 + i32.const 698 i32.const 1 call $~lib/builtins/abort unreachable end - f32.const -1.1920928955078125e-07 - call $~lib/util/number/dtoa + i64.const 1311768467463790320 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24528 + i32.const 21824 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 746 + i32.const 699 i32.const 1 call $~lib/builtins/abort unreachable end - f32.const 3402823466385288598117041e14 - call $~lib/util/number/dtoa + i64.const 9223372036854775807 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24576 + i32.const 21888 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 747 + i32.const 700 i32.const 1 call $~lib/builtins/abort unreachable end - f32.const -3402823466385288598117041e14 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24624 + i32.const 21952 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 748 + i32.const 701 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4185580496821356722454785e274 - call $~lib/util/number/dtoa + i64.const -9223372036854775807 + i32.const 16 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24672 + i32.const 22016 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 749 + i32.const 703 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072014e-308 - call $~lib/util/number/dtoa + i64.const -9223372036854775808 + i32.const 16 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24736 + i32.const 22080 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 750 + i32.const 704 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4.940656e-318 - call $~lib/util/number/dtoa + i64.const -9223372036854775808 + i32.const 16 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24816 + i32.const 22080 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 751 + i32.const 705 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 9060801153433600 - call $~lib/util/number/dtoa + i64.const 0 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24864 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 752 + i32.const 709 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4708356024711512064 - call $~lib/util/number/dtoa + i64.const 1 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24928 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 753 + i32.const 710 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 9409340012568248320 - call $~lib/util/number/dtoa + i64.const 7 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24992 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 754 + i32.const 711 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 5e-324 - call $~lib/util/number/dtoa + i64.const 14 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8320 + i32.const 19152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 755 + i32.const 712 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1 - call $~lib/util/number/dtoa + i64.const 59 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25056 + i32.const 19216 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 757 + i32.const 713 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.1 - call $~lib/util/number/dtoa + i64.const 4095 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 5280 + i32.const 19248 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 758 + i32.const 714 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1 - call $~lib/util/number/dtoa + i64.const 4294967295 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25088 + i32.const 19664 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 759 + i32.const 715 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -0.1 - call $~lib/util/number/dtoa + i64.const 562949953421311 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25120 + i32.const 22144 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 760 + i32.const 716 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e6 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25152 + i32.const 22272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 762 + i32.const 717 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-06 - call $~lib/util/number/dtoa + i64.const -8589934591 + i32.const 2 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25200 + i32.const 22432 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 763 + i32.const 719 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e6 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 3 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25248 + i32.const 22528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 764 + i32.const 723 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-06 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 4 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25296 + i32.const 22640 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 765 + i32.const 724 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e7 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 5 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25344 + i32.const 22736 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 766 + i32.const 725 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-07 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 8 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25392 + i32.const 22816 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 767 + i32.const 726 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.e+308 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 11 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 5568 + i32.const 22880 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 769 + i32.const 727 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1.e+308 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 15 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25424 + i32.const 22944 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 770 + i32.const 728 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const inf - call $~lib/util/number/dtoa + i64.const -1 + i32.const 17 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23312 + i32.const 23008 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 771 + i32.const 729 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -inf - call $~lib/util/number/dtoa + i64.const -1 + i32.const 21 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8960 + i32.const 23072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 772 + i32.const 730 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-308 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 27 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25472 + i32.const 23136 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 773 + i32.const 731 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-308 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 32 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25504 + i32.const 23184 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 774 + i32.const 732 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-323 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 36 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25552 + i32.const 23232 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 775 + i32.const 733 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-323 + f64.const 0 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25584 + i32.const 23280 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 776 + i32.const 736 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0 + f64.const -0 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer @@ -21314,2100 +22267,1146 @@ if i32.const 0 i32.const 1120 - i32.const 777 + i32.const 737 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 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - f64.const 4294967272 - i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl + f64.const nan:0x8000000000000 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 i32.store - local.get $4 - i32.const 23344 local.get $0 - 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 $4 - i32.store - local.get $4 - i32.const 25632 + i32.const 7696 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 779 + i32.const 738 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.2312145673456234e-08 + f64.const inf call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25680 + i32.const 23312 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 780 + i32.const 739 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 555555555.5555556 + f64.const -inf call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25744 + i32.const 8960 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 781 + i32.const 740 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.9999999999999999 + f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25808 + i32.const 8176 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 782 + i32.const 741 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1 + f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25056 + i32.const 24336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 783 + i32.const 742 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 12.34 + f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25872 + i32.const 8240 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 784 + i32.const 743 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.3333333333333333 + f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25904 + i32.const 24400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 785 + i32.const 744 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1234e17 - call $~lib/util/number/dtoa + f32.const 1.1920928955078125e-07 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25968 + i32.const 24480 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 786 + i32.const 745 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1234e18 - call $~lib/util/number/dtoa + f32.const -1.1920928955078125e-07 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26048 + i32.const 24528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 787 + i32.const 746 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.71828 - call $~lib/util/number/dtoa + f32.const 3402823466385288598117041e14 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26096 + i32.const 24576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 788 + i32.const 747 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.0271828 - call $~lib/util/number/dtoa + f32.const -3402823466385288598117041e14 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26144 + i32.const 24624 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 789 + i32.const 748 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 271.828 + f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26192 + i32.const 24672 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 790 + i32.const 749 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.1e+128 + f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26240 + i32.const 24736 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 791 + i32.const 750 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.1e-64 + f64.const 4.940656e-318 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26288 + i32.const 24816 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 792 + i32.const 751 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.000035689 + f64.const 9060801153433600 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26336 + i32.const 24864 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 793 + i32.const 752 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26384 - i32.const 26416 - call $~lib/string/String#concat + f64.const 4708356024711512064 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26448 + i32.const 24928 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 820 + i32.const 753 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 26496 - call $~lib/string/String#concat + f64.const 9409340012568248320 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26496 + i32.const 24992 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 821 + i32.const 754 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26496 - i32.const 1712 - call $~lib/string/String#concat + f64.const 5e-324 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26496 + i32.const 8320 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 822 + i32.const 755 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String#concat + f64.const 1 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 25056 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 823 + i32.const 757 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26528 - i32.const 26528 + f64.const 0.1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 5280 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 831 + i32.const 758 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26528 - i32.const 26528 + f64.const -1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25088 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 832 + i32.const 759 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26560 - i32.const 26560 + f64.const -0.1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 833 + i32.const 760 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26592 - i32.const 26592 + f64.const 1e6 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 834 + i32.const 762 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $std/string/str - i32.const 59404 - 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|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 76 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 - i32.const 2 - local.get $1 - i32.const 0 - i32.gt_s - local.tee $3 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - i32.store16 - local.get $3 - if - local.get $2 - local.get $1 - i32.store16 offset=2 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/rt/__newArray (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 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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.const 2 - i32.shl - local.tee $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $4 - memory.copy - end - local.get $3 - i32.store - i32.const 16 - local.get $1 - 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 $~lib/string/String.fromCodePoint (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 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 - i32.const 2 - local.get $0 - i32.const 65535 - i32.gt_u - local.tee $2 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $2 - if + f64.const 1e-06 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1114111 - i32.gt_u + i32.store + local.get $0 + i32.const 25200 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1328 - i32.const 39 - i32.const 7 + i32.const 1120 + i32.const 763 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 + f64.const -1e6 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 65536 - i32.sub - local.tee $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or + i32.store + local.get $0 + i32.const 25248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-06 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or i32.store - else - local.get $1 local.get $0 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 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 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - if - i32.const 16048 - i32.const 16176 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if + i32.const 25296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e7 + call $~lib/util/number/dtoa + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3392 - return - end - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $4 - select - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if + local.get $0 + i32.store + local.get $0 + i32.const 25344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-07 + call $~lib/util/number/dtoa + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $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 + local.get $0 + i32.store + local.get $0 + i32.const 25392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 767 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 + f64.const 1.e+308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 5568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.e+308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - local.get $4 - i32.add - local.get $2 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq + i32.const 23312 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 31 - local.get $2 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $4 - i32.add - local.set $7 - local.get $2 - i64.extend_i32_u - local.set $3 - loop $while-continue|0 - local.get $1 - i32.const 2 - i32.ge_u - if - local.get $7 - 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 16640 - 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 - i32.const 1 - i32.and - if - local.get $7 - local.get $3 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.const 16640 - i32.add - i32.load16_u - i32.store16 - end - else - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$171 (result i32) - local.get $2 - i64.extend_i32_u - local.set $5 - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $5 - 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$171 - end - local.get $1 - i64.extend_i32_s - local.tee $6 - local.set $3 - i32.const 1 - local.set $0 - loop $while-continue|01 - local.get $3 - local.get $5 - i64.le_u - if - local.get $5 - local.get $3 - i64.div_u - local.set $5 - local.get $3 - local.get $3 - i64.mul - local.set $3 - local.get $0 - i32.const 1 - i32.shl - local.set $0 - br $while-continue|01 - end - end - loop $while-continue|1 - local.get $5 - i64.const 0 - i64.ne - if - local.get $5 - local.get $6 - i64.div_u - local.set $5 - 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 $7 + i32.const 0 + i32.const 1120 + i32.const 771 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $4 - i32.add - local.get $2 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core + call $~lib/builtins/abort + unreachable end - end - local.get $4 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (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 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - if - i32.const 16048 - i32.const 16176 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if + f64.const -inf + call $~lib/util/number/dtoa + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3392 - return - end - local.get $1 - i32.const 10 - i32.eq - if + local.get $0 + i32.store + local.get $0 + i32.const 8960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 772 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-308 + call $~lib/util/number/dtoa + local.set $0 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 + i32.store + local.get $0 + i32.const 25472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 773 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.tee $1 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 + f64.const -1e-308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 local.get $0 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq + i32.const 25504 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s + i32.const 0 + i32.const 1120 + i32.const 774 i32.const 1 - i32.add - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 775 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - 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 $2 - 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 16640 - 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/builtins/abort + unreachable + end + f64.const -1e-323 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 776 i32.const 1 - i32.and - if - local.get $2 - local.get $3 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.const 16640 - i32.add - i32.load16_u - i32.store16 - end - else - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$175 (result i32) - local.get $0 - i64.extend_i32_u - local.set $4 - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $4 - 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$175 - end - local.get $1 - i64.extend_i32_s - local.tee $5 - local.set $3 - i32.const 1 - local.set $2 - loop $while-continue|01 - local.get $3 - local.get $4 - i64.le_u - if - local.get $4 - local.get $3 - i64.div_u - local.set $4 - local.get $3 - local.get $3 - i64.mul - local.set $3 - local.get $2 - i32.const 1 - i32.shl - local.set $2 - br $while-continue|01 - end - end - loop $while-continue|1 - local.get $4 - i64.const 0 - i64.ne - if - local.get $4 - local.get $5 - i64.div_u - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 1 - i32.sub - end - local.tee $6 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 777 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - i64.extend_i32_u - local.get $6 - local.get $1 - call $~lib/util/number/utoa64_any_core + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i64) - (local $5 i64) - (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 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 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 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + f64.const 4294967272 + i32.const 0 + call $~lib/util/number/dtoa_core 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 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - if - i32.const 16048 - i32.const 16176 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.eqz - if + i32.shl + local.tee $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + i32.const 23344 + local.get $0 + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3392 - return - end - local.get $1 - i32.const 10 - i32.eq - if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 25632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.2312145673456234e-08 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 4294967295 - i64.le_u + i32.store + local.get $0 + i32.const 25680 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.wrap_i64 - 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 $6 + i32.const 0 + i32.const 1120 + i32.const 780 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $1 - local.get $6 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 555555555.5555556 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 781 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa64_dec_lut + call $~lib/builtins/abort + unreachable end - else - local.get $1 - i32.const 16 - i32.eq + f64.const 0.9999999999999999 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25808 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s + i32.const 0 + i32.const 1120 + i32.const 782 i32.const 1 - i32.add - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 783 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - 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 16640 - 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/builtins/abort + unreachable + end + f64.const 12.34 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 784 i32.const 1 - i32.and - if - local.get $3 - local.get $0 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.const 16640 - i32.add - i32.load16_u - i32.store16 - end - else - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$180 (result i32) - local.get $0 - local.set $2 - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - 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$180 - end - local.get $1 - i64.extend_i32_s - local.tee $5 - local.set $4 - i32.const 1 - local.set $3 - loop $while-continue|01 - 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|01 - end - end - loop $while-continue|1 - local.get $2 - i64.const 0 - i64.ne - if - local.get $2 - local.get $5 - 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 $6 + call $~lib/builtins/abort + unreachable + end + f64.const 0.3333333333333333 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 785 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - local.get $6 - local.get $1 - call $~lib/util/number/utoa64_any_core + call $~lib/builtins/abort + unreachable + end + f64.const 1234e17 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e18 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 787 + i32.const 1 + 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 $3 - ) - (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 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 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - if - i32.const 16048 - i32.const 16176 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.eqz - if + f64.const 2.71828 + call $~lib/util/number/dtoa + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3392 - 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 - i32.const 1 - i32.shl - local.tee $4 - select - local.set $0 - local.get $1 - i32.const 10 - i32.eq - if local.get $0 - i64.const 4294967295 - i64.le_u + i32.store + local.get $0 + i32.const 26096 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.wrap_i64 - 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 $7 + i32.const 0 + i32.const 1120 + i32.const 788 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.add - local.get $1 - local.get $7 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.0271828 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 789 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.add - local.get $0 - local.get $1 - call $~lib/util/number/utoa64_dec_lut + call $~lib/builtins/abort + unreachable end - else - local.get $1 - i32.const 16 - i32.eq + f64.const 271.828 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26192 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s + i32.const 0 + i32.const 1120 + i32.const 790 i32.const 1 - i32.add - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e+128 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 791 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.add - local.set $7 - loop $while-continue|0 - local.get $1 - i32.const 2 - i32.ge_u - if - local.get $7 - 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 16640 - 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/builtins/abort + unreachable + end + f64.const 1.1e-64 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 792 i32.const 1 - i32.and - if - local.get $7 - local.get $0 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.const 16640 - i32.add - i32.load16_u - i32.store16 - end - else - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$185 (result i32) - local.get $0 - local.set $2 - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - 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$185 - end - local.get $1 - i64.extend_i32_s - local.tee $6 - local.set $5 - i32.const 1 - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $5 - i64.ge_u - if - local.get $2 - local.get $5 - i64.div_u - local.set $2 - local.get $5 - local.get $5 - i64.mul - local.set $5 - local.get $3 - i32.const 1 - i32.shl - local.set $3 - br $while-continue|01 - end - end - loop $while-continue|1 - local.get $2 - i64.const 0 - i64.ne - 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 $7 + call $~lib/builtins/abort + unreachable + end + f64.const 0.000035689 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 793 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.add - local.get $0 - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core + call $~lib/builtins/abort + unreachable end - 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/util/number/dtoa (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 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 23280 - local.set $1 - block $~lib/util/number/dtoa_impl|inlined.0 + i32.const 26384 + i32.const 26416 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.store + local.get $0 + i32.const 26448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 26496 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $0 - f64.sub - f64.const 0 - f64.ne + i32.const 26496 + call $~lib/string/String.__eq + i32.eqz if - i32.const 7696 - local.set $1 - local.get $0 - local.get $0 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 8960 - i32.const 23312 - local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 0 + i32.const 1120 + i32.const 821 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $2 + i32.const 26496 + i32.const 1712 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $0 i32.store - local.get $1 - i32.const 23344 - local.get $2 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/dtoa (param $0 f32) (result i32) - (local $1 f64) - (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 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - 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 23280 - local.set $2 - block $~lib/util/number/dtoa_impl|inlined.1 local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.1 - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne + i32.const 26496 + call $~lib/string/String.__eq + i32.eqz if - i32.const 7696 - local.set $2 - local.get $1 - local.get $1 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 8960 - i32.const 23312 - local.get $1 - f64.const 0 - f64.lt - select - local.set $2 - br $~lib/util/number/dtoa_impl|inlined.1 + i32.const 0 + i32.const 1120 + i32.const 822 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $3 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 + local.get $0 i32.store - local.get $2 - i32.const 23344 - local.get $3 - memory.copy + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 823 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26528 + i32.const 26528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26528 + i32.const 26528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26560 + i32.const 26560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26592 + i32.const 26592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/string/str + i32.const 59404 + 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|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 76 + 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 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/std/symbol.release.wat b/tests/compiler/std/symbol.release.wat index a2036a6706..ea31cd7f43 100644 --- a/tests/compiler/std/symbol.release.wat +++ b/tests/compiler/std/symbol.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func (param i32 i32) (result i32))) - (type $1 (func)) + (type $1 (func (param i32) (result i32))) (type $2 (func (param i32 i32))) - (type $3 (func (param i32) (result i32))) + (type $3 (func)) (type $4 (func (param i32))) (type $5 (func (result i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 i32))) - (type $9 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i32) (result i32))) + (type $9 (func (param i32 i32 i64))) (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,1593 +98,1559 @@ (data $33 (i32.const 2720) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\01\82\00\10A\02") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $~lib/symbol/stringToId - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/symbol/idToString - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/symbol/key1 - local.tee $0 + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $std/symbol/key2 + 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/__visit + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - global.get $std/symbol/key3 - local.tee $0 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $std/symbol/key4 - local.tee $0 + local.get $0 + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 1200 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end - i32.const 1328 - call $~lib/rt/itcms/__visit - i32.const 1536 - call $~lib/rt/itcms/__visit - i32.const 1648 - call $~lib/rt/itcms/__visit - i32.const 1136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub local.tee $1 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.set $0 - loop $while-continue|0 + i32.eq + if local.get $0 - local.get $1 - i32.ne + 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 - i32.load offset=4 + 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 + local.get $3 i32.const 3 + i32.eq i32.and - i32.const 3 - i32.ne if - i32.const 0 - i32.const 1200 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/itcms/Object#makeGray end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 end end ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + 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 - global.get $~lib/rt/itcms/iter + local.get $1 i32.eq if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - block $__inlined_func$~lib/rt/itcms/Object#unlink$246 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 + block $folding-inner0 + local.get $1 i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 35516 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$246 - end local.get $0 - i32.load offset=8 - local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + br_if $folding-inner0 + 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 - else + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2720 - i32.load - i32.gt_u - if - i32.const 1328 - i32.const 1392 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end + i32.store + local.get $3 local.get $1 - i32.const 2 - i32.shl - i32.const 2724 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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 - i32.eqz - if + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$88 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$88 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz return end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount + i32.const 35536 + i32.const 35584 i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1536 + i32.const 1584 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + 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 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + (local $6 i32) + (local $7 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 2748 + i32.lt_s if - i32.const 0 - i32.const 1472 - i32.const 270 - i32.const 14 + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + if (result i32) + i32.const 606290984 + local.set $2 + i32.const -2048144777 + local.set $4 + i32.const 1640531535 + local.set $5 + local.get $1 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.set $7 + loop $while-continue|0 + local.get $1 + local.get $7 + i32.le_u + if + local.get $2 + local.get $1 + i32.load + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 + local.get $4 + local.get $1 + i32.load offset=4 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $4 + local.get $6 + local.get $1 + i32.load offset=8 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $6 + local.get $5 + local.get $1 + i32.load offset=12 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $5 + local.get $1 + i32.const 16 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $3 + local.get $2 + i32.const 1 + i32.rotl + local.get $4 + i32.const 7 + i32.rotl + i32.add + local.get $6 + i32.const 12 + i32.rotl + i32.add + local.get $5 + i32.const 18 + i32.rotl + i32.add + i32.add + else + local.get $3 + i32.const 374761393 + i32.add + end local.set $2 + local.get $0 local.get $3 - local.get $4 + i32.add i32.const 4 i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $4 + i32.le_u + if + local.get $2 + local.get $1 + i32.load + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $2 + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.add + local.set $0 + loop $while-continue|2 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $2 + local.get $1 + i32.load8_u + i32.const 374761393 + i32.mul + i32.add + i32.const 11 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|2 + end + end + local.get $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 i32.const 16 + i32.shr_u i32.xor + else + i32.const 0 end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/symbol/_Symbol.keyFor (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 2748 + i32.lt_s if - i32.const 0 - i32.const 1472 - i32.const 284 - i32.const 14 + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store local.get $1 local.get $0 - local.get $2 + call $"~lib/map/Map#has" + if (result i32) + 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#get" + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/symbol/_Symbol#toString (param $0 i32) (result 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 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 1888 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1888 + i32.store + block $break|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 1 + i32.sub + 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 1920 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1920 + i32.store + br $break|0 + end + i32.const 1968 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store + br $break|0 + end + i32.const 2032 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store + br $break|0 + end + i32.const 2080 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2080 + i32.store + br $break|0 + end + i32.const 2112 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2112 + i32.store + br $break|0 + end + i32.const 2160 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store + br $break|0 + end + i32.const 2192 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2192 + i32.store + br $break|0 + end + i32.const 2240 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2240 + i32.store + br $break|0 + end + i32.const 2272 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2272 + i32.store + br $break|0 + end + i32.const 2320 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2320 i32.store + br $break|0 end + i32.const 2368 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2368 + i32.store + br $break|0 + end + global.get $~lib/symbol/idToString + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $"~lib/map/Map#has" + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.tee $1 + i32.store end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2464 + call $~lib/string/String.__concat + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (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 $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1472 - i32.const 201 - i32.const 14 + i32.const 1136 + i32.const 1200 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 - i32.const 0 - i32.const 1472 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 i32.add - local.tee $4 - i32.load local.tee $2 - i32.const 1 - i32.and + i32.const 1073741820 + i32.gt_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add + i32.const 1136 + i32.const 1472 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1472 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1472 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1472 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 i32.const 4 - i32.shr_u + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - i32.const 31 - i32.const 1073741820 local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub + i32.load + i32.const -4 + i32.and + i32.add local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.load + i32.const -3 + i32.and + i32.store end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + 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 $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const -4 + i32.and + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 + i32.add + global.set $~lib/rt/itcms/total local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1472 - i32.const 382 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $3 + i32.const -4 i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 local.tee $3 + i32.const 12 + i32.lt_u if + i32.const 0 + i32.const 1472 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.shr_u + else + i32.const 31 + i32.const 1073741820 local.get $3 - local.get $1 - i32.const 16 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1472 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 35520 - i32.const 0 - i32.store - i32.const 37088 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 35520 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 35520 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 35520 - i32.const 37092 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 35520 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + local.tee $1 i32.load offset=4 - i32.const -4 + i32.const -2 + local.get $3 + i32.rotl i32.and - i32.eq + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 35516 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white local.get $0 - i32.load offset=4 - i32.const -4 + i32.load + i32.const -2 + local.get $2 + i32.rotl i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + i32.store end - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 35516 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 35516 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1472 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 256 - i32.lt_u + i32.eqz if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 0 + i32.const 1472 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + i32.load + local.tee $3 + i32.const 1 i32.and i32.eqz if i32.const 0 i32.const 1472 - i32.const 334 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.const 2 - i32.shl + local.get $1 + i32.const 4 i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.load + i32.const -4 i32.and - local.tee $1 - if (result i32) + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.ctz + local.get $3 + i32.const 4 + i32.add local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.shl i32.add - i32.const 2 - i32.shl + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - i32.load offset=96 - else - local.get $0 + local.tee $4 i32.load - i32.const -1 - local.get $2 + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 i32.const 1 - i32.add - i32.shl i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else + i32.eqz + if i32.const 0 + i32.const 1472 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if - i32.const 1136 - i32.const 1200 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1472 + i32.const 233 + i32.const 14 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$69 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 + local.get $4 + local.get $1 + i32.const 4 i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + local.get $2 + i32.add + i32.ne if - i32.const 1136 + i32.const 0 i32.const 1472 - i32.const 461 - i32.const 29 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store local.get $2 - i32.const 12 - i32.le_u + i32.const 256 + i32.lt_u 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 i32.shr_u - local.set $3 + else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $3 local.get $2 - local.get $3 - i32.gt_s + i32.const 1073741820 + i32.ge_u 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 $4 + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.xor end + local.tee $2 + i32.const 16 + i32.lt_u local.get $5 - local.get $2 - i32.load - i32.const -4 + i32.const 23 + i32.lt_u i32.and - i32.gt_u + i32.eqz if i32.const 0 i32.const 1472 - i32.const 501 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 + local.get $0 local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add - i32.const 15 - i32.and + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 0 - i32.const 1472 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - local.get $6 - i32.const -4 - i32.and + local.get $0 local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + 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 + if + i32.const 0 + i32.const 1200 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$246 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 35516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$246 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $2 - local.get $5 - local.get $6 - i32.const 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 - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 + local.get $1 + i32.const 2720 i32.load - i32.const -4 - i32.and + i32.gt_u + if + i32.const 1328 + i32.const 1392 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2724 i32.add - local.tee $3 - local.get $3 i32.load - i32.const -3 + i32.const 32 i32.and - i32.store end - local.get $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 $1 - i32.load offset=8 local.set $3 local.get $2 - local.get $1 + i32.load offset=8 + local.set $1 + local.get $0 global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 + i32.eqz + i32.const 2 local.get $3 + select local.get $2 - local.get $3 - 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 $1 - i32.const 0 local.get $0 - memory.fill local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + i32.store offset=8 local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 295 - 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 - 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 - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -1847,23 +1813,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/symbol - ) - (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) - (local $1 i32) + (func $"~lib/map/Map<~lib/string/String,usize>#find" (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 @@ -1882,208 +1833,71 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $~lib/util/hash/hashStr|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.get $0 - i32.eqz - br_if $~lib/util/hash/hashStr|inlined.0 - drop - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $1 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + loop $while-continue|0 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $3 - i32.const 16 - i32.ge_u - if (result i32) - i32.const 606290984 - local.set $2 - i32.const -2048144777 - local.set $4 - i32.const 1640531535 - local.set $5 + if local.get $1 - local.get $3 - i32.add - i32.const 16 - i32.sub - local.set $7 - loop $while-continue|0 - local.get $1 - local.get $7 - i32.le_u - if - local.get $2 - local.get $1 - i32.load - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $2 - local.get $4 - local.get $1 - i32.load offset=4 - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $4 - local.get $6 - local.get $1 - i32.load offset=8 - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $6 - local.get $5 - local.get $1 - i32.load offset=12 - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $5 - local.get $1 - i32.const 16 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $3 - local.get $2 + i32.load offset=8 + local.tee $0 i32.const 1 - i32.rotl - local.get $4 - i32.const 7 - i32.rotl - i32.add - local.get $6 - i32.const 12 - i32.rotl - i32.add - local.get $5 - i32.const 18 - i32.rotl - i32.add - i32.add - else - local.get $3 - i32.const 374761393 - i32.add - end - local.set $2 - local.get $0 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $4 - loop $while-continue|1 - local.get $1 - local.get $4 - i32.le_u - if - local.get $2 + i32.and + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer local.get $1 i32.load - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.set $2 - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|1 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $2 + i32.const 1056 + call $~lib/string/String.__eq end - end - local.get $0 - local.get $3 - i32.add - local.set $0 - loop $while-continue|2 - local.get $0 - local.get $1 - i32.gt_u if - local.get $2 - local.get $1 - i32.load8_u - i32.const 374761393 - i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 11 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $2 + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|2 + return end + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 end - local.get $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $"~lib/map/Map#find" (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 global.get $~lib/memory/__stack_pointer @@ -2098,168 +1912,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$88 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$88 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - if - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -2267,7 +1922,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $2 local.get $0 i32.load offset=4 i32.and @@ -2275,147 +1930,110 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - global.get $~lib/memory/__stack_pointer local.get $1 + local.get $0 i32.load - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - local.get $2 - i32.const 1056 - call $~lib/string/String.__eq + i32.eq end if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 return end - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|0 end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $"~lib/map/Map<~lib/string/String,usize>#set" (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + (func $~lib/symbol/_Symbol.for (result i32) + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - 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/util/hash/HASH<~lib/string/String> - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - local.get $0 - local.get $6 - call $"~lib/map/Map<~lib/string/String,usize>#find" - local.tee $2 - if - local.get $2 - local.get $1 - i32.store offset=4 - else + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 + i32.const 2748 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $0 i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=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 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + call $"~lib/map/Map<~lib/string/String,usize>#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 + global.get $~lib/symbol/stringToId + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1056 i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2423,257 +2041,75 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $7 - 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 $5 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $9 - 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 $9 - i32.ne - if - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.load - local.tee $10 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=8 - local.get $2 - local.get $10 - i32.store - local.get $2 - local.get $9 - i32.load offset=4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=8 - local.get $2 - local.get $8 - local.get $10 - call $~lib/util/hash/HASH<~lib/string/String> - local.get $7 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $10 - i32.load - i32.store offset=8 - local.get $10 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $9 - i32.const 12 - i32.add - local.set $9 - br $while-continue|0 - end - end + 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 $8 - i32.store offset=16 local.get $0 - local.get $8 i32.store - local.get $0 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 + i32.const 1056 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1056 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 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 local.get $0 - i32.load offset=20 - i32.store offset=16 + i32.load offset=4 + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + br $folding-inner1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId local.get $0 - i32.load offset=8 - local.tee $2 - i32.store offset=8 + i32.eqz + if + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/symbol/stringToId + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1056 i32.store offset=4 + local.get $1 local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - local.get $2 - local.get $3 - 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 + call $"~lib/map/Map<~lib/string/String,usize>#set" global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/symbol/idToString + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1056 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 local.get $1 - local.get $6 - 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 + call $"~lib/map/Map#set" + br $folding-inner1 end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (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 2748 - i32.lt_s - if i32.const 35536 i32.const 35584 i32.const 1 @@ -2682,75 +2118,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - 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.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) + (func $~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) - (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 block $folding-inner0 @@ -2762,531 +2140,498 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $2 i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - 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 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $7 - call $"~lib/map/Map#find" - local.tee $2 - if + i32.store + block $__inlined_func$~lib/string/String#concat$253 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1888 + local.set $0 + br $__inlined_func$~lib/string/String#concat$253 + end global.get $~lib/memory/__stack_pointer - i32.const 1056 - 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 - else - global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.store + local.get $2 + local.get $3 + memory.copy local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $8 - 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 2748 - i32.lt_s - br_if $folding-inner0 - 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.get $8 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $10 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $10 - i32.ne - if - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $10 - i32.load - local.tee $11 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.load offset=4 - local.tee $4 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $9 - local.get $8 - 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 $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=8 - local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $10 - i32.const 12 - i32.add - local.set $10 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=12 - local.get $0 - local.get $9 - i32.store - local.get $0 - local.get $9 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + return + end + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.load offset=8 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 local.get $2 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $2 + i32.ctz local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 35520 + i32.const 0 + i32.store + i32.const 37088 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 + i32.const 2 + i32.shl + i32.const 35520 + i32.add + i32.const 0 i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 35520 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end local.get $0 - local.get $0 - i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.set $0 + br $for-loop|0 + end + end + i32.const 35520 + i32.const 37092 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 35520 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - 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 $2 - i32.store end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if return end - i32.const 35536 - i32.const 35584 - i32.const 1 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/symbol/_Symbol.for (result i32) + (func $~lib/rt/itcms/visitRoots (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-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/stringToId - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=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 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 + global.get $~lib/symbol/stringToId + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/symbol/idToString + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1536 + call $~lib/rt/itcms/__visit + i32.const 1648 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if local.get $0 - i32.const 1056 - call $~lib/util/hash/HASH<~lib/string/String> - call $"~lib/map/Map<~lib/string/String,usize>#find" - i32.const 0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer if - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/stringToId - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=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 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - 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 - local.get $0 - i32.load offset=4 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 - end - global.get $~lib/symbol/nextId - local.tee $0 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $0 - i32.eqz - if + i32.const 1200 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/stringToId - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - local.get $1 + i32.const 20 + i32.add + call $~lib/rt/__visit_members local.get $0 - call $"~lib/map/Map#set" - br $folding-inner1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - i32.const 35536 - i32.const 35584 - i32.const 1 - 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 - local.get $0 ) (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -3411,62 +2756,639 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + 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 $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/symbol + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 35516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 35516 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 35516 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 ) - (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) - (local $1 i32) + (func $"~lib/map/Map<~lib/string/String,usize>#set" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - if - i32.const 35536 - i32.const 35584 - 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 - global.get $~lib/symbol/idToString - local.tee $1 - i32.store - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if (result i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + 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/util/hash/HASH<~lib/string/String> + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $0 + local.get $6 + call $"~lib/map/Map<~lib/string/String,usize>#find" + local.tee $2 + if + local.get $2 + local.get $1 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + 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 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $7 + 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 $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $9 + 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 $9 + i32.ne + if + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.load + local.tee $10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $2 + local.get $10 + i32.store + local.get $2 + local.get $9 + i32.load offset=4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $2 + local.get $8 + local.get $10 + call $~lib/util/hash/HASH<~lib/string/String> + local.get $7 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $10 + i32.load + i32.store offset=8 + local.get $10 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $9 + i32.const 12 + i32.add + local.set $9 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + local.get $2 + local.get $3 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $6 + 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 - global.get $~lib/symbol/idToString - local.tee $1 - i32.store - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - else - i32.const 0 + 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 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -3478,258 +3400,376 @@ i64.const 0 i64.store 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 - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - local.tee $2 i32.store local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$253 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1888 - local.set $0 - br $__inlined_func$~lib/string/String#concat$253 - end + 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 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $7 + call $"~lib/map/Map#find" + local.tee $2 + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1056 + i32.store + local.get $2 + i32.const 1056 i32.store offset=4 local.get $0 - local.get $2 - local.get $3 - memory.copy + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + else + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy + i32.store + local.get $0 + i32.load 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 - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/symbol/_Symbol#toString (param $0 i32) (result 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 2748 - i32.lt_s - if - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 1888 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1888 - i32.store - block $break|0 - block $case11|0 - block $case10|0 - block $case9|0 - block $case8|0 - block $case7|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - i32.const 1 - i32.sub - 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 1920 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1920 - i32.store - br $break|0 - end - i32.const 1968 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store - br $break|0 - end - i32.const 2032 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store - br $break|0 - end - i32.const 2080 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2080 - i32.store - br $break|0 - end - i32.const 2112 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2112 - i32.store - br $break|0 - end - i32.const 2160 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2160 - i32.store - br $break|0 - end - i32.const 2192 - local.set $1 + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $8 + 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 2748 + i32.lt_s + br_if $folding-inner0 + 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.get $8 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $5 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $10 + i32.load + local.tee $11 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 2192 + local.get $10 + i32.load offset=4 + local.tee $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=4 + local.get $2 + local.get $9 + local.get $8 + 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 $4 + i32.const 15 + i32.shr_u + local.get $4 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + i32.const 13 + i32.shr_u + local.get $4 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + i32.const 16 + i32.shr_u + local.get $4 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=8 + local.get $4 + local.get $2 i32.store - br $break|0 + local.get $2 + i32.const 12 + i32.add + local.set $2 end - i32.const 2240 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2240 - i32.store - br $break|0 + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 end - i32.const 2272 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2272 - i32.store - br $break|0 end - i32.const 2320 - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2320 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $0 + local.get $9 i32.store - br $break|0 + local.get $0 + local.get $9 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 2368 - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2368 + local.get $0 i32.store - br $break|0 - end - global.get $~lib/symbol/idToString - if (result i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/idToString + local.get $0 + i32.load offset=8 local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store local.get $2 + i32.const 1056 + i32.store offset=4 local.get $0 - call $"~lib/map/Map#has" - else - i32.const 0 - end - if + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/idToString - local.tee $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 local.get $1 + local.get $7 local.get $0 - call $"~lib/map/Map#get" - local.tee $1 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2464 - call $~lib/string/String.__concat - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $start:std/symbol (local $0 i32) @@ -4200,46 +4240,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/arraybuffer/ArrayBuffer#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 2748 - i32.lt_s - if - i32.const 35536 - i32.const 35584 - 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.const 1073741820 - i32.gt_u - if - i32.const 1536 - i32.const 1584 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - 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 - ) ) diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index 7b9c1a567d..d65e1d98a9 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -11,36 +11,36 @@ (type $9 (func (param i32))) (type $10 (func (param f64 f64) (result i32))) (type $11 (func (param f32 f32) (result i32))) - (type $12 (func (param i32 i32 i32 i32 i32))) - (type $13 (func (param i32 i32 i32 i32 i32 i32))) - (type $14 (func (param f32 i32 i32) (result i32))) - (type $15 (func (param f64 i32 i32) (result i32))) + (type $12 (func (param f64 i32 i32) (result i32))) + (type $13 (func (param f32 i32 i32) (result i32))) + (type $14 (func (param i32 i32 i32 i32 i32))) + (type $15 (func (param i32 i32 i32 i32 i32 i32))) (type $16 (func (param i32 i32) (result i64))) (type $17 (func (param i64 i64 i32 i32) (result i64))) - (type $18 (func (param i32 i64) (result i32))) - (type $19 (func (param i32 i64 i32) (result i32))) + (type $18 (func (param i32 i64 i32) (result i32))) + (type $19 (func (param i32 i64) (result i32))) (type $20 (func (param i32 i32 i32 i32))) (type $21 (func (param i32 i32 i64))) - (type $22 (func (param f32 f32 i32 i32) (result f32))) - (type $23 (func (param f64 f64 i32 i32) (result f64))) - (type $24 (func (param i64 i32 i32) (result i64))) - (type $25 (func (param i32 f64 i32) (result i32))) - (type $26 (func (param i32 i32) (result f64))) - (type $27 (func (param i32 i32) (result f32))) + (type $22 (func (param i32 i32) (result f64))) + (type $23 (func (param i32 i32) (result f32))) + (type $24 (func (param i32 f64 i32) (result i32))) + (type $25 (func (param f64 f64 i32 i32) (result f64))) + (type $26 (func (param f32 f32 i32 i32) (result f32))) + (type $27 (func (param i64 i32 i32) (result i64))) (type $28 (func (param i64 i32 i32))) - (type $29 (func (param f32 i32 i32) (result f32))) - (type $30 (func (param f64 i32 i32) (result f64))) + (type $29 (func (param i32 f32 i32) (result i32))) + (type $30 (func (param i32 f64) (result i32))) (type $31 (func (param i32 f32) (result i32))) - (type $32 (func (param i32 f64) (result i32))) - (type $33 (func (param f32 i32 i32))) + (type $32 (func (param f64 i32 i32) (result f64))) + (type $33 (func (param f32 i32 i32) (result f32))) (type $34 (func (param f64 i32 i32))) - (type $35 (func (param i32 f32 i32) (result i32))) - (type $36 (func (result i32))) - (type $37 (func (param i32 i64 i32))) - (type $38 (func (param i32 i64 i64 i32 i64 i32) (result i32))) - (type $39 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $40 (func (param i32 i32 f64))) - (type $41 (func (param i32 i32 f32))) + (type $35 (func (param f32 i32 i32))) + (type $36 (func (param i32 i32 f64))) + (type $37 (func (param i32 i32 f32))) + (type $38 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $39 (func (param i32 i64 i32))) + (type $40 (func (result i32))) + (type $41 (func (param i32 i64 i64 i32 i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -673,8196 +673,8323 @@ (data $304 (i32.const 16000) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t") (data $304.1 (i32.const 16252) "\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02") (table $0 166 166 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/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") + (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/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~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/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~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/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~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/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~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/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~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/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~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/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 7152 - call $~lib/rt/itcms/__visit - i32.const 7616 - call $~lib/rt/itcms/__visit - i32.const 7728 - call $~lib/rt/itcms/__visit - i32.const 10928 - call $~lib/rt/itcms/__visit - i32.const 11008 - call $~lib/rt/itcms/__visit - i32.const 11088 - call $~lib/rt/itcms/__visit - i32.const 11184 - call $~lib/rt/itcms/__visit - i32.const 11264 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - i32.const 8432 - call $~lib/rt/itcms/__visit - i32.const 9488 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 1073741804 + i32.ge_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$1403 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 49088 - i32.lt_u - i32.and - i32.eqz - if + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $2 i32.const 0 - i32.const 1232 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$1403 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 $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 end - global.get $~lib/rt/itcms/toSpace - 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 $0 - i32.load offset=12 + i32.const 16 + i32.add + 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 $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 16000 - i32.load - i32.gt_u - if - i32.const 1360 - i32.const 1424 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 16004 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.load offset=8 local.set $3 local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 + local.get $1 global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 i32.or i32.store offset=4 - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 + local.get $3 + local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $2 - local.get $0 i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) + 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 + i32.const 0 local.get $0 - i32.eqz + memory.fill + local.get $1 + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 1360 + i32.const 1760 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/tlsf/removeBlock (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 + local.get $0 + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#__set (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 268 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 270 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 178 + i32.const 45 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#get:length (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 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 284 - i32.const 14 + i32.const 49120 + i32.const 49168 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 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 16320 + i32.lt_s if - local.get $4 - local.get $5 - i32.store offset=8 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 1360 + i32.const 1632 + i32.const 1031 + i32.const 64 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 4 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 i32.shl - local.get $3 i32.add - i32.const 2 - i32.shl + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + (func $~lib/typedarray/Int16Array#__set (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 201 - i32.const 14 + i32.const 49120 + i32.const 49168 + 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.store local.get $1 - i32.load - local.tee $3 + local.get $0 + i32.load offset=8 i32.const 1 - i32.and - i32.eqz + i32.shr_u + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 203 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 463 + i32.const 64 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.const 4 + i32.const 1 + i32.shl i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 49120 + i32.const 49168 + 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 + local.get $1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $1 local.get $3 - i32.const 2 - i32.and if local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + local.get $5 + memory.copy end - local.get $4 - local.get $2 - i32.const 2 - i32.or + local.get $1 i32.store - local.get $3 - i32.const -4 - i32.and + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1504 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 local.get $1 + i32.store + local.get $2 + local.get $1 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $5 + 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 - i32.add - i32.ne + ) + (func $~lib/typedarray/Int64Array#get:length (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 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 234 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 251 - i32.const 14 + i32.const 49120 + i32.const 49168 + 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 - local.get $5 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#get:length (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 16320 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 49120 + i32.const 49168 + 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 - local.get $5 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#__set (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store local.get $1 - i32.store offset=96 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 747 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (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 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 382 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.const -16 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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=1568 - local.tee $3 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 1360 + i32.const 1632 + i32.const 36 + i32.const 45 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 0 - i32.store offset=8 + 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 1457 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.const 4 + i32.const 3 + i32.shl i32.add - local.get $3 + local.get $2 + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $3 - i32.const 2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#__set (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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 - local.get $3 - i32.store offset=1568 + i32.store + 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 889 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) + (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + 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.store + 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 1315 + i32.const 64 + call $~lib/builtins/abort unreachable end - i32.const 49088 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 50656 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#__set (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 320 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.const 255 + local.get $2 + i32.sub + i32.const 31 + i32.shr_s + local.get $2 + i32.or + local.get $2 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 295 + 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 23 - i32.lt_u + 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 local.get $0 - i32.const 2 - i32.shl - i32.const 49088 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + i32.const 3 + i32.eq + i32.and + if local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 49088 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/rt/itcms/Object#makeGray end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 49088 - i32.const 50660 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 49088 - 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 49088 - i32.lt_u + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 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 16320 + i32.lt_s if - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u if - call $~lib/rt/tlsf/initialize + i32.const 1360 + i32.const 1632 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer 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) + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - else - local.get $1 - i32.load i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1504 - i32.const 562 - i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 49088 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 49088 - 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 - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 334 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 605 + i32.const 64 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - i32.const -1 local.get $1 + i32.const 1 i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 1168 - i32.const 1504 - i32.const 461 - i32.const 29 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - 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.add - i32.const 1 - i32.sub - else - local.get $3 - end - else - local.get $3 - end - i32.const 4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + i32.const -1 local.get $0 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.tee $3 + i32.eqz local.get $2 - local.get $1 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop local.get $2 - i32.gt_s - select - memory.grow i32.const 0 i32.lt_s if local.get $2 - memory.grow + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 i32.lt_s if - unreachable + local.get $2 + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end end - local.get $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.const -1 end - local.get $3 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.gt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) + (local $1 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 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 501 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load - local.set $4 - local.get $3 - i32.const 4 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 15 - i32.and + 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 361 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const -4 - i32.and - local.get $3 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + 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 8 + 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 8 i32.sub - local.tee $2 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - local.get $3 - local.get $4 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - local.get $2 - i32.const 4 - i32.sub + i32.const 49120 + i32.const 49168 i32.const 1 - i32.or - i32.store - local.get $0 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $4 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - ) - (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 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int32Array#__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 16320 + i32.lt_s if - i32.const 1168 - i32.const 1232 - i32.const 261 - i32.const 31 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + i32.const 1360 + i32.const 1632 + i32.const 736 + i32.const 64 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 + i32.store local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 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.const 2 + i32.shl + i32.add i32.load - i32.const -4 - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) + (local $1 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new local.tee $1 - i32.const 0 - local.get $0 - memory.fill + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.eqz + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int8Array#__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 16320 + i32.lt_s if - return + i32.const 49120 + i32.const 49168 + 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.eqz + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - i32.const 1232 - i32.const 295 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 25 + i32.const 45 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 20 - i32.sub - local.tee $1 + local.get $0 i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s 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 - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 i32) - (local $8 f64) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - local.get $3 - local.get $2 + 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 1446 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.sub - i32.const 1 + i32.const 3 + i32.shl i32.add - local.tee $7 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $7 - i32.const 1 - i32.and - local.get $3 - select + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load offset=8 - local.tee $8 - local.set $6 - local.get $3 - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $8 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.le_s - if - local.get $5 - local.set $6 - local.get $8 - local.set $5 - end - local.get $7 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#__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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 309 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + 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 $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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$714 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 local.get $3 - i32.le_s if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - f64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $9 - local.get $8 - f64.store offset=16 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$714 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 49088 + i32.const 0 + i32.store + i32.const 50656 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - local.get $3 - i32.const 3 + i32.const 2 i32.shl + i32.const 49088 i32.add - local.get $5 - f64.store offset=16 - loop $while-continue|2 + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - local.get $3 - i32.le_s + i32.const 16 + i32.lt_u if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $9 - local.get $5 - f64.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 49088 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end end local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store offset=8 - local.get $7 - i32.const 2 + i32.const 1 i32.add - local.set $7 + local.set $0 br $for-loop|0 end end + i32.const 49088 + i32.const 50660 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 49088 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) local.get $1 - local.get $2 - i32.eq + i32.const 1073741820 + i32.gt_u if - local.get $1 - return + i32.const 1168 + i32.const 1504 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable end local.get $0 local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load offset=8 - local.get $6 - f64.load - i32.const 2 - global.set $~argumentsLength local.get $3 - i32.load - call_indirect (type $10) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load - local.set $5 + i32.const 27 local.get $3 - local.get $0 - local.get $2 - i32.const 3 + i32.clz + i32.sub i32.shl i32.add - local.tee $3 - f64.load - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f64.store - local.get $2 i32.const 1 i32.sub - local.set $2 - br $while-continue|1 + else + local.get $3 end + else + local.get $3 end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load offset=8 - local.get $1 - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $10) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 i32) - (local $10 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $9 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 + i32.const 4 + local.get $0 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 i32.lt_s if local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 3 - i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 - i32.add - f64.load - f64.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $9 - local.get $6 - i32.sub - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - f64.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - end - loop $for-loop|2 + local.get $0 local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 local.get $3 - i32.le_s + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $4 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $10) i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $8 - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 + i32.const 1504 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - local.get $2 - i64.xor - local.tee $2 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - local.get $3 - i64.xor - local.tee $3 - i64.gt_s - local.get $2 local.get $3 - i64.lt_s - i32.sub - ) - (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 $"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 $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - local.get $0 local.get $1 - f32.add - ) - (func $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 - f64.add - ) - (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 - i32.mul - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - local.get $0 - local.get $0 - i64.mul - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result f32) - local.get $0 - local.get $0 - f32.mul - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result f64) - local.get $0 - local.get $0 - f64.mul - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.extend8_s - i32.const 2 - i32.gt_s - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $0 - i32.const 20 - i32.sub - local.tee $3 i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 i32.const -4 i32.and - i32.const 16 + local.get $3 i32.sub - i32.le_u + local.tee $2 + i32.const 16 + i32.ge_u if + local.get $1 local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store local.get $1 - i32.store offset=16 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store local.get $0 - return + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store end local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $0 - local.get $0 - local.get $1 - i32.gt_u - select - memory.copy - local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.gt_u - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 49088 + i32.lt_u + if + return + end + 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.extend16_s - i32.const 2 - i32.gt_s - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.const 65535 + i32.const 15 i32.and - i32.const 2 - i32.gt_u - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 1 local.get $0 - i32.const 2 - i32.gt_s + 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 1504 + i32.const 562 + 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 $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) + (local $1 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.const 2 - i32.gt_u - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i64.const 2 - i64.gt_s ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) + (local $1 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i64.const 2 - i64.gt_u - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - f32.const 2 - f32.gt ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) + (local $1 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - f64.const 2 - f64.gt ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) + (local $1 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.const 255 - i32.and i32.const 2 - i32.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 255 - i32.and - i32.eqz ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.const 65535 - i32.and - i32.const 2 - i32.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.store + local.get $1 local.get $0 - i32.const 65535 - i32.and - i32.eqz - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 167 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - i32.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.store + local.get $1 local.get $0 - i32.eqz + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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 - i64.const 2 - i64.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + i32.store + local.get $1 local.get $0 - i64.eqz - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1162 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 2 - f32.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + i32.store local.get $0 - f32.const 0 - f32.eq + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) + (local $1 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - f64.const 2 - f64.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - f64.const 0 - f64.eq ) - (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 - i32.and + (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.eq - ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.const 65535 - i32.and + i32.store + 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 878 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.eq + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + 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 594 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.eq + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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 - i64.const 4 - i64.eq - ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + i32.store + local.get $1 local.get $0 - 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) + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1020 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer 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) + i32.store local.get $0 - i32.extend8_s - i32.const 1 - i32.and - i32.eqz + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#__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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $1 + local.get $0 + i32.load offset=8 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) + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.extend16_s + i32.store + local.get $0 + i32.load offset=4 + local.get $1 i32.const 1 - i32.and - i32.eqz + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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 - 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 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.store + 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 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/isInt32ArrayEqual (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 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 + 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.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner0 local.get $1 - i32.const -2147483648 - i32.and + call $~lib/array/Array#get:length + local.get $3 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length local.set $3 - 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 $1 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $2 - i32.sub - i32.shl - end - local.set $1 - loop $while-continue|0 + loop $for-loop|0 local.get $2 - i32.const 128 - i32.gt_s + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 8388608 - i32.ge_u - if (result i32) - local.get $0 - f32.const 0 - f32.mul - local.get $1 - i32.const 8388608 - i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod - drop - local.get $1 - i32.const 8388608 - i32.sub - else - local.get $1 - end - i32.const 1 - i32.shl - local.set $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 - br $while-continue|0 + br $for-loop|0 end end - local.get $1 - i32.const 8388608 - i32.ge_u - if - local.get $0 - f32.const 0 - f32.mul - local.get $1 - i32.const 8388608 - i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod - drop - local.get $1 - i32.const 8388608 - i32.sub - local.set $1 - end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) + (local $1 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + 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 8 + 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + i32.store offset=4 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz local.get $2 - local.get $1 - i32.const 8 - i32.shl - i32.clz - local.tee $4 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i32.shl - local.set $1 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop local.get $2 i32.const 0 - i32.gt_s - if (result i32) - local.get $1 - i32.const 8388608 - i32.sub + i32.lt_s + if local.get $2 - i32.const 23 - i32.shl - i32.or - else - local.get $1 - i32.const 1 + local.get $3 + i32.add + local.tee $2 + i32.const 0 local.get $2 - i32.sub - i32.shr_u + i32.const 0 + i32.gt_s + select + local.set $2 end - local.get $3 - i32.or - f32.reinterpret_i32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $1 + f64.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 end - f32.const 0 - f32.eq + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (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$1 (result f64) + (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + i32.const -1 local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $6 - 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$1 - end - local.get $4 - i64.const 1 - i64.shl + call $~lib/typedarray/Int32Array#get:length local.tee $3 - i64.const -9223372036854775808 - i64.le_u + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s if - local.get $0 + local.get $2 local.get $3 - i64.const -9223372036854775808 - i64.ne - f64.convert_i32_u - f64.mul - br $__inlined_func$~lib/math/NativeMath.mod$1 - end - local.get $4 - i64.const 63 - i64.shr_u - local.set $5 - local.get $6 - i64.eqz - if (result i64) - local.get $4 - i64.const 1 - local.get $6 - local.get $4 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $6 - i64.sub - i64.shl - else - local.get $4 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 end - local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 loop $while-continue|0 - local.get $6 - i64.const 1024 - i64.gt_s + local.get $2 + local.get $3 + i32.lt_s if - local.get $3 - i64.const 4503599627370496 - i64.ge_u - if (result i64) - local.get $0 - f64.const 0 - f64.mul - local.get $3 - i64.const 4503599627370496 - i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$1 - drop - local.get $3 - i64.const 4503599627370496 - 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 + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $1 + f32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 br $while-continue|0 end end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + local.get $2 local.get $3 - i64.const 4503599627370496 - i64.ge_u + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s if - local.get $0 - f64.const 0 - f64.mul - local.get $3 - i64.const 4503599627370496 - i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$1 - drop + local.get $2 local.get $3 - i64.const 4503599627370496 - i64.sub - local.set $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 $6 - local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $4 - i64.sub - local.set $6 - local.get $3 - local.get $4 - i64.shl - local.set $3 - local.get $6 - i64.const 0 - i64.gt_s - if (result i64) - local.get $3 - i64.const 4503599627370496 - i64.sub - local.get $6 - i64.const 52 - i64.shl - i64.or - else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 local.get $3 - i64.const 1 - local.get $6 - i64.sub - i64.shr_u + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end end - local.get $5 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 + i32.const -1 end - f64.const 0 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s 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 8012 i32.add - i64.load32_u + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end end + i32.const -1 end - local.get $1 - i32.const 100 - i32.ge_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#indexOf (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 16320 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 10 - i32.ge_u - if + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + i32.const -1 local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.tee $3 + i32.eqz 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 8012 - i32.add - i32.load - i32.store - else - local.get $0 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop 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 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) - local.get $1 - i32.extend8_s - local.tee $3 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - local.tee $2 if - local.get $3 - i32.const -128 - i32.eq - if - local.get $0 - i64.const 15762813447372845 - i64.store - i32.const 4 - return - end - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.extend8_s - local.tee $3 - i32.const 10 - i32.lt_u - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + i32.const -1 local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + local.get $2 local.get $3 - i32.const 48 + i32.ge_s i32.or - i32.store16 + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i32.extend8_s - 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.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 - 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end end + i32.const -1 end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer ) - (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 - local.tee $2 - i32.const 10 - i32.lt_u + (func $~lib/typedarray/Int32Array#indexOf (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 16320 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 48 - i32.or - i32.store16 + i32.const 49120 + i32.const 49168 i32.const 1 - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 255 - i32.and - local.set $1 - i32.const 3 - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $1 - i32.const 100 - i32.ge_u - select - local.set $2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 0 - i32.lt_s - local.tee $2 - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + local.get $2 local.get $3 - i32.const -32768 - i32.eq + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s if - local.get $0 - i64.const 15481338470793261 - i64.store - local.get $0 - i32.const 3670070 - i32.store offset=8 - i32.const 6 - return + 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 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.store offset=4 + 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 $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 end - local.get $0 - local.get $2 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $0 - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 10 - i32.lt_u + global.set $~lib/memory/__stack_pointer + ) + (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 - local.get $3 - i32.const 48 - i32.or - i32.store16 - local.get $2 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add - return + global.set $~lib/rt/itcms/visitCount end - local.get $1 - i32.extend16_s - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) + ) + (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 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else + i32.const 10000 + i32.ge_u + if 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) + i32.rem_u + local.set $3 local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 + 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 - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 8012 i32.add - local.get $1 - i32.const 100000000 - i32.ge_u + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 8012 i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - local.get $3 - i32.add - ) - (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 - local.tee $2 - i32.const 10 - i32.lt_u + i32.const 100 + i32.ge_u if local.get $0 local.get $2 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $1 - i32.const 65535 - i32.and - local.set $1 - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u + i32.const 2 + i32.sub + local.tee $2 i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 + i32.shl i32.add local.get $1 - i32.const 1000 - i32.ge_u + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 8012 i32.add - end - local.set $2 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - 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 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 + i32.load + i32.store local.get $1 - i32.sub + i32.const 100 + i32.div_u local.set $1 end - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 local.get $1 i32.const 10 - i32.lt_u + i32.ge_u if local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 local.get $2 + i32.const 2 + i32.sub i32.const 1 + i32.shl i32.add - return - end - local.get $0 - local.get $1 - 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 + i32.const 2 + i32.shl + i32.const 8012 + 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 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 + i32.const 48 + i32.add + i32.store16 end - local.tee $0 - call $~lib/util/number/utoa32_dec_lut + ) + (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 $2 + local.get $1 i32.add ) - (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/typedarray/Uint8Array#lastIndexOf (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 16320 + i32.lt_s if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 + i32.const 49120 + i32.const 49168 i32.const 1 - return + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - 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 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $2 + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end end + i32.const -1 end - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (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 8012 - i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 8012 - 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 8012 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + (func $~lib/typedarray/Int32Array#slice@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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $outOfRange + global.get $~argumentsLength + br_table $1of2 $1of2 $2of2 $outOfRange + end + unreachable end + i32.const 2147483647 + local.set $1 end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.const 0 local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut + call $~lib/typedarray/Int32Array#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 - i64.const 0 - i64.lt_s + local.get $0 + 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 $0 - i32.const 45 - i32.store16 - i64.const 0 + local.get $3 local.get $1 - i64.sub - local.set $1 + i32.store offset=16 + local.get $0 + return end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 local.get $0 + local.get $1 local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $4 + i32.load offset=16 + local.tee $0 + local.get $0 local.get $1 - i64.const 10 - i64.lt_u + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result 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 16320 + i32.lt_s if - local.get $4 - local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $3 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.add - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - i64.const 4294967295 - i64.le_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + i32.eqz if - local.get $1 - i32.wrap_i64 - 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 $0 - local.get $4 - local.get $2 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - local.get $4 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new local.tee $0 - call $~lib/util/number/utoa64_dec_lut + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.add - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) + i32.store offset=4 local.get $0 - local.set $2 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $1 - i64.const 10 - i64.lt_u + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u if - local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - return + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i64.const 4294967295 - i64.le_u + local.get $2 + i32.shl + local.tee $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - i32.wrap_i64 - 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 $0 - local.get $2 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 local.get $3 - local.get $0 - call $~lib/util/number/utoa32_dec_lut + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select else - local.get $2 local.get $1 + local.get $3 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 + local.get $3 + i32.lt_s + select end - local.get $0 - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) + 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 - i64.sub - local.set $9 - i64.const 1 + i32.sub + local.tee $2 i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 + ) + (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 8 i32.sub - local.tee $10 - i64.extend_i32_s + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.tee $1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - local.tee $11 + local.get $1 local.get $2 - i64.and - local.set $8 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $3 + i32.eqz + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 local.get $1 - i64.shr_u - i32.wrap_i64 - 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 + local.get $0 + local.get $3 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Uint8Array#lastIndexOf@varargs (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable end - else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint8Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (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 $"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/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 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 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end end + i32.const -1 end - 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 $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $5 - local.get $6 - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#lastIndexOf (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $2 local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $6 - 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 $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $2 - i64.shl - local.get $8 - i64.add - local.tee $1 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 + local.get $2 i32.const 2 i32.shl - i32.const 10736 i32.add - i64.load32_u + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop local.get $2 - i64.shl - local.set $2 - local.get $0 - local.get $5 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $1 - local.get $9 - i64.lt_u - local.get $4 - local.get $1 - i64.sub - local.get $2 - i64.ge_u - i32.and - if (result i32) - local.get $9 - local.get $1 - local.get $2 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $1 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $2 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 - return + local.set $2 + br $while-continue|0 end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $8 - i64.const 10 - i64.mul - local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - 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 $1 - local.get $11 - i64.and - local.tee $8 - local.get $4 - i64.ge_u - br_if $while-continue|4 + i32.const -1 end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 10736 - i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $1 - local.get $8 - i64.gt_u - local.get $4 - local.get $8 - i64.sub - local.get $12 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $8 - local.get $12 - i64.add - local.tee $2 - i64.gt_u - local.get $1 - local.get $8 - i64.sub - local.get $2 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $8 - local.get $12 - i64.add - local.set $8 - br $while-continue|6 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $0 - local.get $1 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $2 local.get $0 - local.get $1 + local.get $2 i32.const 1 i32.shl i32.add - i32.const 48 - i32.store16 + i32.load16_u local.get $1 + i32.const 65535 + i32.and + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop + local.get $2 i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.sub + local.set $2 + br $while-continue|0 end end - local.get $0 - local.get $3 + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 local.get $3 - i32.const 2 i32.add - else local.get $3 - i32.const 21 - i32.le_s + 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 - i32.and - 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 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 local.get $2 - i32.sub - i32.const 1 - i32.shl - 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 - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) + i32.ge_s + if + local.get $2 local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 + local.get $2 + i32.const 3 i32.shl i32.add - local.get $0 + i64.load local.get $1 + i64.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 i32.const 1 - i32.shl - memory.copy + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#lastIndexOf (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $2 local.get $0 - i32.const 3014704 - i32.store + local.get $2 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.shl i32.add - else + i32.load local.get $1 - i32.const 1 i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - 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 - 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 - 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 $3 - select - i32.store16 - 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 - 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 - i32.const 4 - i32.add - local.tee $4 - 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 - 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 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $1 - i32.const 2 - i32.add + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 end end + i32.const -1 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i64) + (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 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - local.get $1 - f64.const 0 - f64.lt - local.tee $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 16320 + i32.lt_s if - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - local.set $1 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $2 - if (result i64) + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $5 + local.get $0 + i32.load offset=4 + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 - f32.demote_f64 - i32.reinterpret_f32 - local.tee $8 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.tee $9 - i32.const 1 - local.get $9 - select - i32.const 150 - i32.sub - local.set $5 - local.get $8 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $9 + local.get $4 + i32.add + local.tee $1 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add + local.get $1 + i32.const 0 + i32.gt_s + select else local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 1 - local.get $8 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s select - i32.const 1075 - i32.sub - local.set $5 - local.get $3 - i64.const 4503599627370495 - i64.and - local.get $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add end - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.get $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $6 - i64.clz - i32.wrap_i64 - local.tee $8 - i32.sub - local.set $9 - local.get $6 - local.get $8 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $3 + local.tee $1 + i32.const 2 + i32.shl + i32.add local.get $3 - i64.const 8388608 - i64.const 4503599627370496 local.get $2 - select - i64.eq - i32.const 1 - i32.add + 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 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub + 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.add + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + else + local.get $5 + local.get $4 + local.get $4 + local.get $5 + i32.gt_s + select + end local.get $2 i32.sub - local.get $9 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $9 - 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_sat_f64_s local.tee $2 - local.get $2 - f64.convert_i32_s + local.get $4 local.get $1 - 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 $5 i32.sub - global.set $~lib/util/number/_K - local.get $5 - i32.const 9864 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow + local.tee $1 + local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.const 10560 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $3 - local.get $3 - i64.clz - i64.shl - local.tee $3 - i64.const 4294967295 - i64.and - local.set $10 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_pow - local.tee $11 - i64.const 4294967295 - i64.and - local.tee $12 - i64.mul - local.get $10 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $13 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $14 - local.get $12 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $12 - local.get $14 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $15 - global.get $~lib/util/number/_frc_minus - local.tee $16 - i64.const 4294967295 - i64.and - local.set $3 - local.get $12 - local.get $16 - i64.const 32 - i64.shr_u - local.tee $16 - i64.mul - local.get $3 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 - local.get $11 - i64.const 32 - i64.shr_u - local.tee $11 - local.get $7 - i64.mul - local.get $15 - i64.const 32 - i64.shr_u - i64.add - local.get $11 - local.get $14 - i64.mul - local.get $15 - 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 $7 - local.get $0 - local.get $4 - i32.const 1 + i32.gt_s + select + i32.const 2 i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $6 - local.get $11 - i64.mul - local.get $13 - i64.const 32 - i64.shr_u - i64.add - local.get $10 - local.get $11 - i64.mul - local.get $13 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $7 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $7 - local.get $11 - local.get $16 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $11 - i64.mul - local.get $12 - 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 $4 - call $~lib/util/number/genDigits - local.get $4 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $4 - i32.add ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) - (local $2 f64) + (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) - local.get $1 - f64.promote_f32 - local.tee $2 - 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 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub local.get $2 local.get $2 - f64.sub - f64.const 0 - f64.ne - if - local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 local.get $2 - f64.ne + i32.const 0 + i32.ge_s 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 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else local.get $2 - f64.const 0 - f64.lt - local.tee $3 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $3 - i32.const 8 + local.get $2 + i32.const 3 + i32.shl i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + f64.load + local.get $1 + f64.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 end - unreachable end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + i32.const -1 local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop local.get $2 + local.get $3 + i32.add + local.get $3 i32.const 1 - call $~lib/util/number/dtoa_core + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $1 + f32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) (local $2 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result 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 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne + (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store local.get $1 - f64.ne + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.tee $5 + local.get $4 + i32.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 11760 i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - 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 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 local.get $2 - i32.const 8 - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.1 + 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 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/util/number/dtoa_core end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (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 + i32.mul + ) + (func $std/typedarray/isInt8ArrayEqual (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) - local.get $1 - local.get $3 - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.get $5 - i32.const 1 - i32.and - local.get $3 - select - i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.add - local.tee $3 - i32.load8_s offset=1 - local.tee $6 - local.set $5 - local.get $3 - i32.load8_s + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length local.set $3 - i32.const 2 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.add - local.tee $8 - i32.load8_s - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store8 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 offset=2 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.add - local.tee $3 - i32.load8_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store8 offset=1 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#__get + local.set $5 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=12 + i32.ge_u + if + i32.const 1360 + i32.const 1760 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.ne + br_if $folding-inner1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $0 - local.get $6 - i32.add - local.get $5 - i32.store8 offset=1 - local.get $7 - i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $7 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end + i32.const 49120 + i32.const 49168 + 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 + i32.const 0 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result 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) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load + local.tee $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 local.get $0 + i32.load offset=4 local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + 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 $0 i32.add - i32.load8_s + i32.store offset=4 + local.get $4 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + 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.tee $1 + local.get $0 + local.get $0 local.get $1 - i32.const 1 - i32.add - local.tee $4 + i32.lt_s + select local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $5 - i32.load8_s offset=1 - local.get $5 - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int8Array#reverse (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 $8 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $4 + local.get $5 + i32.const 8 + i32.sub + local.set $6 + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.add + local.get $4 + i32.lt_u if - local.get $4 - i32.const 1 + local.get $1 + local.get $2 i32.add - local.set $4 + local.tee $7 + i64.load + 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.set $3 + local.get $7 + local.get $2 + local.get $6 + i32.add + local.get $1 + i32.sub + local.tee $7 + i64.load + local.tee $8 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $8 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $8 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $8 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $7 + local.get $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 + local.get $1 + i32.const 8 + i32.add + local.set $1 br $while-continue|0 end end - local.get $4 - local.set $2 + local.get $5 + i32.const 1 + i32.sub + local.set $5 loop $while-continue|1 local.get $1 - local.get $2 - i32.lt_s + local.get $4 + i32.lt_u if - local.get $0 local.get $1 + local.get $2 i32.add - local.tee $3 - i32.load8_s - local.set $5 - local.get $3 - local.get $0 + local.tee $6 + i32.load8_u + local.set $7 + local.get $6 local.get $2 + local.get $5 + local.get $1 + i32.sub i32.add - local.tee $3 - i32.load8_s + local.tee $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 i32.store8 local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 br $while-continue|1 end end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $1 - i32.load8_s offset=1 - local.get $1 - i32.load8_s + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int32Array#copyWithin@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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 + i32.sub + br_table $0of1 $1of1 $outOfRange end + unreachable end + i32.const 2147483647 + local.set $3 end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 local.get $2 - i32.const 1 - i32.sub - local.tee $6 local.get $3 + call $~lib/typedarray/Int32Array#copyWithin + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $4 - i32.add - local.get $0 - local.get $2 - i32.add - i32.load8_s - i32.store8 - br $for-loop|0 - end + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#subarray (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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load + local.tee $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 local.get $3 - local.get $6 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_s offset=1 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select end - loop $for-loop|2 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $4 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 0 local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $2 local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.add - i32.load8_s - local.set $8 - local.get $2 - local.get $4 - i32.add - i32.load8_s - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $7 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.add - local.get $8 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.add - local.get $7 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 - end + local.get $2 + local.get $3 + i32.lt_s + select end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.extend8_s - local.get $1 - i32.extend8_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.extend8_s local.tee $1 local.get $0 - i32.extend8_s - local.tee $0 - i32.gt_s local.get $0 local.get $1 - i32.gt_s + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (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) - (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 - local.get $2 + i32.store local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and + call $~lib/array/Array#get:length local.get $3 - select - i32.add - local.set $7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 local.get $2 - local.get $7 - i32.ge_s + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.add - local.tee $3 - i32.load8_u offset=1 - local.tee $6 - local.set $5 - local.get $3 - i32.load8_u - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.tee $5 local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + i32.ne if - local.get $3 - local.set $5 - local.get $6 - local.set $3 + i32.const 11552 + 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 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $7 + local.get $2 i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.add - local.tee $8 - i32.load8_u - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store8 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 offset=2 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.add - local.tee $3 - i32.load8_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store8 offset=1 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - end - local.get $0 - local.get $6 - i32.add - local.get $5 - i32.store8 offset=1 - local.get $7 - i32.const 2 i32.add - local.set $7 + 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 $~lib/util/sort/extendRunRight (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 $1 - local.get $2 - i32.eq + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) + (local $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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.add - i32.load8_u + i32.store local.get $1 - i32.const 1 - i32.add - local.tee $4 - local.get $0 - i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength + call $~lib/array/Array#get:length local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.ne if - loop $while-continue|0 + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $5 - i32.load8_u offset=1 - local.get $5 - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 + call $~lib/typedarray/Uint64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 local.get $2 - i32.lt_s + call $~lib/typedarray/Uint64Array#__uget + local.tee $5 + local.get $4 + i64.ne if - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.load8_u - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store8 + i32.const 13984 + i32.const 3 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 + f64.convert_i32_s local.get $4 - i32.add - local.tee $1 - i32.load8_u offset=1 - local.get $1 - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else + 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 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 + (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.sub - local.tee $6 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 - local.get $1 local.get $2 + local.get $3 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $2 - i32.const 1 - i32.sub - local.tee $2 + call $~lib/typedarray/Uint32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint32Array#__uget + local.tee $5 local.get $4 - i32.add - local.get $0 + i32.ne + if + i32.const 12960 + 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 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end local.get $2 + i32.const 1 i32.add - i32.load8_u - i32.store8 + local.set $2 br $for-loop|0 end end - loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 - i32.add - i32.load8_u offset=1 - i32.store8 - local.get $6 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint16Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint16Array#__uget + local.tee $5 + local.get $4 + i32.ne + if + i32.const 12288 + 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 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 i32.const 1 i32.add - local.set $6 - br $for-loop|1 + local.set $2 + br $for-loop|0 end end - loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.le_s + i32.ne if - local.get $4 - local.get $6 - i32.add - i32.load8_u - local.set $8 - local.get $2 - local.get $4 - i32.add - i32.load8_u - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $7 - local.get $5 - i32.load - call_indirect (type $0) i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.add - local.get $8 - i32.store8 - local.get $6 - i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.set $6 - else + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + local.set $4 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=4 i32.add - local.get $7 - i32.store8 + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i32.ne + if + i32.const 11344 + 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 764 + 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 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (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 + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 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 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.const 255 - i32.and - local.tee $0 - i32.gt_u + i32.store local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.gt_u - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 + i32.store local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and + call $~lib/array/Array#get:length local.get $3 - select - i32.add - local.set $7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 local.get $2 - local.get $7 - i32.ge_s + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s offset=2 - local.tee $6 - local.set $5 - local.get $3 - i32.load16_s - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Int64Array#__uget + local.tee $5 local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + i64.ne if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $8 - i32.load16_s - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store16 offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.store16 offset=4 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store16 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end + i32.const 13376 + 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 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $6 + local.get $2 i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 offset=2 - local.get $7 - i32.const 2 i32.add - local.set $7 + 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 $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + 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 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s + i32.store local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 2 - global.set $~argumentsLength + i32.store + local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.ne if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_s offset=2 - local.get $5 - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 local.get $2 - i32.lt_s + call $~lib/typedarray/Int32Array#__uget + local.tee $5 + local.get $4 + i32.ne if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store16 + i32.const 12592 + i32.const 3 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 + f64.convert_i32_s local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_s offset=2 - local.get $1 - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else + 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 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 + (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 - local.tee $6 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 - local.get $1 local.get $2 + local.get $3 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.tee $8 + call $~lib/typedarray/Int16Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Int16Array#__uget + local.tee $5 local.get $4 + i32.ne + if + i32.const 12000 + 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 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 i32.add - local.get $0 - local.get $8 - i32.add - i32.load16_s - i32.store16 + local.set $2 br $for-loop|0 end end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 $4 - local.get $7 - local.get $6 + local.get $0 + local.get $2 + i32.const 4 i32.sub + local.tee $2 i32.const 1 i32.shl i32.add - local.get $0 - local.get $6 - i32.const 1 + 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 8012 i32.add - i32.load16_s offset=2 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if + i64.load32_u local.get $4 - local.get $6 - i32.const 1 + i32.const 100 + i32.rem_u + i32.const 2 i32.shl + i32.const 8012 i32.add - i32.load16_s - local.set $7 - local.get $4 + 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 - i32.load16_s - local.set $8 + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 + i32.shl + i32.const 8012 i32.add - local.set $1 - br $for-loop|2 + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.extend16_s - local.get $1 - i32.extend16_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.extend16_s - local.tee $1 - local.get $0 - i32.extend16_s - local.tee $0 - i32.gt_s local.get $0 local.get $1 - i32.gt_s - i32.sub + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i64) + (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) + (local $6 i64) + (local $7 i64) (local $8 i32) (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) local.get $1 - local.get $3 + f64.const 0 + f64.lt + local.tee $4 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $1 + f64.neg + local.set $1 + end local.get $2 - local.get $1 - i32.sub + if (result i64) + local.get $1 + f32.demote_f64 + i32.reinterpret_f32 + local.tee $8 + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.tee $9 + i32.const 1 + local.get $9 + select + i32.const 150 + i32.sub + local.set $5 + local.get $8 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.get $9 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + i64.add + else + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.set $5 + local.get $3 + i64.const 4503599627370495 + i64.and + local.get $8 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + end + local.set $3 + local.get $5 i32.const 1 - i32.add - local.tee $5 - local.get $3 i32.sub - i32.const 1 - i32.and + local.get $3 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $6 + i64.clz + i32.wrap_i64 + local.tee $8 i32.sub - local.get $5 - i32.const 1 - i32.and + local.set $9 + local.get $6 + local.get $8 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $3 local.get $3 + i64.const 8388608 + i64.const 4503599627370496 + local.get $2 select + i64.eq + i32.const 1 i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u offset=2 - local.tee $6 - local.set $5 - local.get $3 - i32.load16_u - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $8 - i32.load16_u - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store16 offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.store16 offset=4 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store16 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 offset=2 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end - end - ) - (func $~lib/util/sort/extendRunRight (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 $1 + local.tee $2 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $5 local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 + i32.sub + local.get $9 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $9 + 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_sat_f64_s + local.tee $2 + local.get $2 + f64.convert_i32_s local.get $1 + 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 $5 + i32.sub + global.set $~lib/util/number/_K + local.get $5 + i32.const 9864 i32.add - i32.load16_u - local.get $0 - local.get $1 + i64.load + global.set $~lib/util/number/_frc_pow + local.get $2 i32.const 1 + i32.shl + i32.const 10560 i32.add - local.tee $4 + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $3 + local.get $3 + i64.clz + i64.shl + local.tee $3 + i64.const 4294967295 + i64.and + local.set $10 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_pow + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + i64.mul + local.get $10 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $13 + global.get $~lib/util/number/_frc_plus + local.tee $3 + i64.const 4294967295 + i64.and + local.set $14 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $7 + local.get $12 + i64.mul + local.get $12 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + global.get $~lib/util/number/_frc_minus + local.tee $16 + i64.const 4294967295 + i64.and + local.set $3 + local.get $12 + local.get $16 + i64.const 32 + i64.shr_u + local.tee $16 + i64.mul + local.get $3 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $7 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $14 + i64.mul + local.get $15 + 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 $11 + local.get $0 + local.get $4 i32.const 1 i32.shl i32.add - i32.load16_u - i32.const 2 - global.set $~argumentsLength + local.get $0 + local.get $6 + local.get $7 + i64.mul + local.get $13 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $10 + i64.mul + local.get $13 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $11 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $11 + local.get $7 + local.get $16 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + local.get $7 + i64.mul + local.get $12 + 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 $4 + call $~lib/util/number/genDigits + local.get $4 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $4 + i32.add + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - loop $while-continue|0 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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) + 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + loop $for-loop|0 local.get $2 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u offset=2 - local.get $5 - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 i32.lt_s if - local.get $0 - local.get $1 - i32.const 1 - i32.shl + local.get $2 + local.get $3 i32.add - local.tee $3 - i32.load16_u + i32.load8_u local.set $5 - local.get $3 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - i32.store16 - local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength i32.const 1 - i32.add - local.set $1 - local.get $3 local.get $5 - i32.store16 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_u offset=2 - local.get $1 - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 + br $for-loop|0 end end + i32.const 0 end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 + (func $~lib/typedarray/Uint8Array#findLastIndex (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 12 i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length i32.const 1 - i32.add + i32.sub local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load16_u - i32.store16 - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $7 - local.get $4 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + loop $for-loop|0 local.get $2 - 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 (type $0) i32.const 0 - i32.lt_s + i32.ge_s if - local.get $0 - local.get $1 - i32.const 1 - i32.shl + local.get $2 + local.get $3 i32.add - local.get $7 - i32.store16 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.store16 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 + br $for-loop|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 end + i32.const -1 + local.set $2 end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (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) + 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 65535 - i32.and - local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 65535 - i32.and - local.tee $1 - i32.gt_u + i32.store offset=4 + global.get $~lib/memory/__stack_pointer 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 + i32.store offset=8 local.get $0 - i32.const 65535 - i32.and - local.tee $0 - i32.gt_u + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.gt_u - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and - local.get $3 - select - i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - local.tee $6 - local.set $5 - local.get $3 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + 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.load - call_indirect (type $0) - i32.const 0 - i32.le_s + i32.lt_s if + local.get $2 local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store offset=8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end + i32.load + call_indirect (type $1) + 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 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 end + i32.const -1 + local.set $2 end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (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) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + loop $for-loop|0 local.get $2 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 i32.lt_s if - local.get $0 - local.get $1 - i32.const 2 - i32.shl + local.get $2 + local.get $3 i32.add - local.tee $3 - i32.load + i32.load8_u local.set $5 - local.get $3 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store + local.get $0 local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 - br $while-continue|1 + br $for-loop|0 end end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange end - if - local.get $4 + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#lastIndexOf@varargs (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 1 - i32.add - local.set $4 - br $while-continue|2 + i32.sub + br_table $0of1 $1of1 $outOfRange end + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 end - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf@varargs (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 local.get $2 - i32.const 1 + call $~lib/typedarray/Uint16Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $6 - local.get $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $0 + local.get $2 i32.add - local.set $7 - local.get $6 - i32.const 1 + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.tee $2 + local.get $0 + local.get $3 i32.add - local.set $2 - loop $for-loop|0 + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.tee $0 + i32.lt_s + if + local.get $2 + local.get $4 + i32.add local.get $1 + local.get $0 local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 - end + i32.sub + memory.fill end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - 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 $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $3 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u if - local.get $0 + local.get $2 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add - local.get $7 - i32.store + local.tee $6 + i64.load + local.set $4 local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 + local.get $2 + local.get $5 local.get $1 - i32.const 2 + i32.sub + i32.const 3 i32.shl i32.add - local.get $8 - i32.store - local.get $2 + local.tee $6 + i64.load + i64.store + local.get $6 + local.get $4 + i64.store + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 + br $while-continue|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 end end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and - local.get $3 - select - i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - local.tee $6 - local.set $5 - local.get $3 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store offset=8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Int64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (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 $6 i32) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + 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 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.store local.get $0 - local.get $1 - i32.const 1 - i32.add + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.const 1 + i32.gt_u if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end local.get $4 - local.set $2 - loop $while-continue|1 + i32.const 1 + i32.shr_u + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|0 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.lt_u if - local.get $0 + local.get $2 local.get $1 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $6 i32.load - local.set $5 - local.get $3 - local.get $0 + local.set $4 + local.get $6 local.get $2 + local.get $5 + local.get $1 + i32.sub i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $6 i32.load i32.store + local.get $6 + local.get $4 + i32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $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 + local.get $0 + ) + (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 - local.set $2 - br $while-continue|1 + br_table $0of1 $1of1 $outOfRange end + unreachable end - else - loop $while-continue|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Int32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $0 + i32.add + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + local.get $3 + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.set $0 + block $__inlined_func$~lib/util/bytes/FILL$202 + local.get $1 + i32.eqz + local.get $1 + i32.const -1 + i32.eq + i32.or + if + local.get $0 local.get $2 - local.get $4 i32.gt_s - if (result i32) - local.get $0 + if local.get $4 + local.get $2 i32.const 2 i32.shl i32.add - local.tee $1 - i32.load offset=4 local.get $1 - i32.load + local.get $0 + local.get $2 + i32.sub i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 + i32.shl + memory.fill end + br $__inlined_func$~lib/util/bytes/FILL$202 + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s if local.get $4 + 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 $4 - br $while-continue|2 + local.set $2 + br $for-loop|0 end end end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (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 $6 i32) (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + i32.load offset=4 local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - 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 $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 - end - end - ) - (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) + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.lt_u + i32.store local.get $0 - local.get $1 - i32.gt_u - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $7 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $7 + call $~lib/typedarray/Int16Array#get:length + local.tee $4 i32.const 1 - i32.and - local.get $3 - select - i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 3 - i32.shl + i32.gt_u + if + local.get $4 + i32.const 1 + i32.shr_u + local.set $3 + local.get $4 + i32.const 2 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + i32.const 1 i32.add - local.tee $3 - i64.load offset=8 - local.tee $8 - local.set $6 local.get $3 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $8 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s + i32.lt_u if + local.get $2 local.get $5 - local.set $6 - local.get $8 - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 local.get $1 - local.get $3 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $9 - local.get $8 - i64.store offset=16 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store offset=16 - loop $while-continue|2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + local.set $7 + local.get $6 + local.get $2 local.get $1 - local.get $3 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $9 - local.get $5 - i64.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store offset=8 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end - end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 + i32.const 1 i32.shl i32.add local.tee $6 - i64.load offset=8 + i32.load + i32.const 16 + i32.rotr + i32.store local.get $6 - i64.load + local.get $7 + i32.store + local.get $1 i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 i32.add - local.set $4 + local.set $1 br $while-continue|0 end end local.get $4 - local.set $2 + i32.const 1 + i32.sub + local.set $4 loop $while-continue|1 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.lt_u if - local.get $0 + local.get $2 local.get $1 - i32.const 3 + i32.const 1 i32.shl i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $0 + local.tee $5 + i32.load16_u + local.set $6 + local.get $5 local.get $2 - i32.const 3 + local.get $4 + local.get $1 + i32.sub + i32.const 1 i32.shl i32.add - local.tee $3 - i64.load - i64.store + local.tee $5 + i32.load16_u + i32.store16 + local.get $5 + local.get $6 + i32.store16 local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 - local.get $5 - i64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 br $while-continue|1 end end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - i64.load offset=8 - local.get $1 - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 1 - i32.add - local.set $4 - br $while-continue|2 + i32.sub + br_table $0of1 $1of1 $outOfRange end + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $9 - local.get $6 - i32.const 1 + call $~lib/typedarray/Float64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 3 - i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 - i32.add - i64.load - i64.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $9 - local.get $6 - i32.sub - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - i64.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $7) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store - local.get $6 + 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 - local.set $6 - else - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $8 - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 + br_table $0of1 $1of1 $outOfRange end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 end - ) - (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) + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i64.lt_s + i32.store local.get $0 local.get $1 - i64.gt_s - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i32) - local.get $1 - local.get $3 local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $7 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $7 - i32.const 1 - i32.and - local.get $3 - select + call $~lib/typedarray/Float32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load offset=8 - local.tee $8 - local.set $6 - local.get $3 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $8 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - if - local.get $5 - local.set $6 - local.get $8 - local.set $5 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $7 - i32.const 1 - i32.sub - local.set $3 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 loop $while-continue|1 - local.get $1 - local.get $3 - i32.le_s + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - block $while-break|1 + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $7) + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $9 - local.get $8 - i64.store offset=16 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store offset=16 - loop $while-continue|2 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|2 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 49088 + i32.lt_u + if local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $9 - local.get $5 - i64.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 br $while-continue|2 end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - local.get $3 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store offset=8 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 49088 + 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 + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - local.get $1 - local.get $2 - i32.eq + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength + i32.store + local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s + i32.ne if - loop $while-continue|0 + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load offset=8 - local.get $6 - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 + call $~lib/typedarray/Float64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 local.get $2 - i32.lt_s + call $~lib/typedarray/Float64Array#__uget + local.tee $5 + local.get $4 + f64.ne if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 + i32.const 14896 i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i64.store local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 + f64.convert_i32_s local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - i64.load offset=8 - local.get $1 - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else + local.get $5 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - local.get $2 - i32.const 1 + (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 + i32.const 4 i32.sub - local.tee $6 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.add - local.set $9 - local.get $6 - i32.const 1 - i32.add - local.set $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 - local.get $1 local.get $2 + local.get $3 i32.lt_s if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 3 - i32.shl - local.tee $10 - local.get $4 - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $10 - i32.add - i64.load - i64.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $9 - local.get $6 - i32.sub - i32.const 3 - i32.shl - i32.add + i32.store local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - i64.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - local.get $4 local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $7) - i32.const 0 - i32.lt_s + call $~lib/typedarray/Float32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Float32Array#__uget + local.tee $5 + local.get $4 + f32.ne if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 + i32.const 14544 i32.const 3 - i32.shl - i32.add - local.get $8 - i64.store local.get $2 - i32.const 1 - i32.add - local.set $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 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|2 + 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 $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + (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.gt_u + i64.add + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i64.lt_u - i32.sub + i32.const 65535 + i32.and + i32.const 2 + i32.eq ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i64) (result i32) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i64.lt_u + f64.const 2 + f64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i64.gt_u - i32.sub + f32.const 2 + f32.eq ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 f32) - (local $6 f32) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + 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 + i64.const 4 + i64.eq + ) + (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 + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) (local $7 i32) - (local $8 f32) + (local $8 i32) (local $9 i32) local.get $1 local.get $3 @@ -8871,13 +8998,13 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $7 + local.get $5 i32.const 1 i32.and local.get $3 @@ -8891,119 +9018,109 @@ if local.get $0 local.get $7 - i32.const 2 - i32.shl i32.add local.tee $3 - f32.load offset=4 - local.tee $8 - local.set $6 - local.get $3 - f32.load + i32.load8_u offset=1 + local.tee $6 local.set $5 + local.get $3 + i32.load8_u + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $5 - local.get $8 + local.get $3 + local.get $6 local.get $4 i32.load - call_indirect (type $11) + call_indirect (type $0) i32.const 0 i32.le_s if - local.get $5 - local.set $6 - local.get $8 + local.get $3 local.set $5 + local.get $6 + local.set $3 end local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $6 loop $while-continue|1 local.get $1 - local.get $3 + local.get $6 i32.le_s if block $while-break|1 local.get $0 - local.get $3 - i32.const 2 - i32.shl + local.get $6 i32.add - local.tee $9 - f32.load - local.set $8 + local.tee $8 + i32.load8_u + local.set $9 i32.const 2 global.set $~argumentsLength - local.get $8 - local.get $5 + local.get $9 + local.get $3 local.get $4 i32.load - call_indirect (type $11) + call_indirect (type $0) i32.const 0 i32.le_s br_if $while-break|1 - local.get $9 local.get $8 - f32.store offset=8 - local.get $3 + local.get $9 + i32.store8 offset=2 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 br $while-continue|1 end end end local.get $0 - local.get $3 - i32.const 2 - i32.shl + local.get $6 i32.add - local.get $5 - f32.store offset=8 + local.get $3 + i32.store8 offset=2 loop $while-continue|2 local.get $1 - local.get $3 + local.get $6 i32.le_s if block $while-break|2 local.get $0 - local.get $3 - i32.const 2 - i32.shl + local.get $6 i32.add - local.tee $9 - f32.load - local.set $5 + local.tee $3 + i32.load8_u + local.set $8 i32.const 2 global.set $~argumentsLength + local.get $8 local.get $5 - local.get $6 local.get $4 i32.load - call_indirect (type $11) + call_indirect (type $0) i32.const 0 i32.le_s br_if $while-break|2 - local.get $9 - local.get $5 - f32.store offset=4 local.get $3 + local.get $8 + i32.store8 offset=1 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 br $while-continue|2 end end end local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add local.get $6 - f32.store offset=4 + i32.add + local.get $5 + i32.store8 offset=1 local.get $7 i32.const 2 i32.add @@ -9012,858 +9129,1385 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) local.get $1 + local.get $3 local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $0 local.get $1 + i32.sub i32.const 1 i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 2 - global.set $~argumentsLength + local.tee $7 local.get $3 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load offset=8 + local.tee $8 + local.set $6 + local.get $3 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load offset=4 - local.get $6 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $11) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load + local.get $5 + local.set $6 + local.get $8 local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - f32.store + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 local.get $1 - i32.const 1 - i32.add - local.set $1 local.get $3 - local.get $5 - f32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + i64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load offset=4 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store offset=16 + loop $while-continue|2 local.get $1 - f32.load - i32.const 2 - global.set $~argumentsLength local.get $3 - i32.load - call_indirect (type $11) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + i64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $6 + i64.store offset=8 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 end end - local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 f32) + (local $7 i32) + (local $8 i32) (local $9 i32) - (local $10 i32) + local.get $1 + local.get $3 local.get $2 - i32.const 1 + local.get $1 i32.sub - local.tee $6 - local.get $3 + i32.const 1 i32.add - local.set $9 - local.get $6 + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 i32.const 1 + i32.and + local.get $3 + select i32.add - local.set $2 + local.set $7 loop $for-loop|0 - local.get $1 local.get $2 - i32.lt_s + local.get $7 + i32.ge_s if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + local.get $0 + local.get $7 i32.const 2 i32.shl - local.tee $10 - local.get $4 i32.add - local.get $0 - local.get $10 - i32.add - f32.load - f32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $9 + local.tee $3 + i32.load offset=4 + local.tee $6 + local.set $5 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 i32.const 2 i32.shl i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end local.get $0 local.get $6 i32.const 2 i32.shl i32.add - f32.load offset=4 - f32.store - local.get $6 - i32.const 1 + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 i32.add - local.set $6 - br $for-loop|1 + local.set $7 + br $for-loop|0 end end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - local.get $4 - local.get $2 - i32.const 2 + local.get $0 + local.get $7 + i32.const 1 i32.shl i32.add - f32.load - local.set $8 + local.tee $3 + i32.load16_u offset=2 + local.tee $6 + local.set $5 + local.get $3 + i32.load16_u + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 + local.get $3 + local.get $6 + local.get $4 i32.load - call_indirect (type $11) + call_indirect (type $0) i32.const 0 - i32.lt_s + i32.le_s if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store + local.get $3 + local.set $5 local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 + local.set $3 end - local.get $1 + local.get $7 i32.const 1 - i32.add - local.set $1 - br $for-loop|2 - end - end + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_u + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store16 offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=4 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store16 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 offset=2 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + 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 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u local.get $3 - 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.const 1 + i32.add + local.tee $5 + local.get $3 i32.sub - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.add + local.tee $3 + i32.load8_s offset=1 + local.tee $6 + local.set $5 + local.get $3 + i32.load8_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.add + local.tee $8 + i32.load8_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store8 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 end - 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 16320 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - 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.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $6 + i32.add + local.get $3 + i32.store8 offset=2 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.add + local.tee $3 + i32.load8_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store8 offset=1 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $6 i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $5 + i32.store8 offset=1 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:std/typedarray ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) local.get $1 - i32.const 1073741820 + local.get $3 local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 19 - 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 $1 + i32.sub i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 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 8 + local.tee $7 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - i32.store offset=4 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 + i32.and i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.sub - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $7 + i32.const 1 + i32.and + local.get $3 + select i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#get:length (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load offset=8 + local.tee $8 + local.set $6 + local.get $3 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + i64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + i64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $6 + i64.store offset=8 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) - (local $1 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 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 8 - 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 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - i32.store offset=4 - 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 8 + i32.const 1 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 8 + local.tee $5 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - i32.store offset=4 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.and i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $0 - i32.load offset=8 + local.get $5 i32.const 1 - i32.shr_u - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.and + local.get $3 + select i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) - (local $1 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load offset=4 + local.tee $6 + local.set $5 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 local.get $1 - local.get $0 + i32.sub i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 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 8 + local.tee $5 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s offset=2 + local.tee $6 + local.set $5 + local.get $3 + i32.load16_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store16 offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=4 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store16 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 offset=2 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f64) + (local $6 f64) + (local $7 i32) + (local $8 f64) + (local $9 i32) local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 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 8 + i32.sub + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load offset=8 + local.tee $8 + local.set $6 + local.get $3 + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + f64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + f64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store offset=8 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end ) - (func $~lib/typedarray/Int32Array#get:length (param $0 i32) (result i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f32) + (local $6 f32) + (local $7 i32) + (local $8 f32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load offset=4 + local.tee $8 + local.set $6 + local.get $3 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + f32.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + f32.store offset=4 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (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 @@ -9882,64 +10526,86 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) - (local $1 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 16320 - i32.lt_s + i32.eqz if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + return + end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 + 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 $2 + i32.const 1 + i32.shl + i32.const 2 call $~lib/rt/itcms/__new local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 + local.get $2 + call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result 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 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9954,191 +10620,107 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - ) - (func $~lib/typedarray/Int64Array#get:length (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 16320 - i32.lt_s + i32.eqz if - i32.const 49120 - i32.const 49168 - i32.const 1 - 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 8000 + return end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.sub local.get $0 - i32.load offset=8 - i32.const 3 + local.get $0 + i32.const 31 i32.shr_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) - (local $1 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.shl + local.tee $0 + select + 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 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 1 + i32.shl local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 + i32.const 2 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 8 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut local.get $0 - ) - (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) - (local $1 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 16320 - i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 45 + i32.store16 end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) - (func $std/typedarray/testInstantiate (param $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 48 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10154,558 +10736,733 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 48 - memory.fill + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 local.get $0 - local.get $1 i32.load offset=8 - 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.store offset=4 + local.tee $2 + i32.const 0 local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint8Array#constructor + i32.const 0 + i32.lt_s + select + i32.add local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 332 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store local.get $1 - i32.load offset=8 - i32.ne - 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.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.store offset=12 + i32.load offset=4 + i32.add + i32.load8_u global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.get $0 - i32.ne - if + i32.store + 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 + end + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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.tee $3 + local.get $1 + i32.lt_u + if + i32.const 1360 + i32.const 1632 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 i32.const 0 - i32.const 1568 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.set $2 + else + local.get $1 + local.get $2 + i32.add + local.get $3 + i32.gt_s + if + i32.const 1056 + i32.const 1632 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + 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 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 + local.get $3 + return end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 - local.get $0 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1409 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_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 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + 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 $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + 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 + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.ne + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint8Array#at (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 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 48 - i32.const 3 + i32.const 49120 + i32.const 49168 + 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.store local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#get:length local.get $0 - i32.ne + i32.load offset=8 + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 190 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.store local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#at (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 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 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 3 + i32.const 49120 + i32.const 49168 + 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.store local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 local.get $0 - i32.const 1 - i32.shl - i32.ne + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 53 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1185 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#get:length local.get $0 - i32.ne + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#at (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 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store offset=24 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 57 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 901 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl - i32.ne + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#at (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 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 58 - i32.const 3 + i32.const 49120 + i32.const 49168 + 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.store local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 62 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 617 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 local.get $0 - i32.const 2 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + i32.load16_u global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store offset=32 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 67 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 - local.get $0 - i32.const 3 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.store offset=36 + i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + i32.store offset=8 local.get $1 - i32.load offset=8 - local.get $0 - i32.const 3 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int8Array#get:length + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.store offset=8 local.get $0 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + call $~lib/typedarray/Int8Array#get:length + local.get $2 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 77 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 local.get $0 - i32.const 2 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 78 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + i32.store offset=8 local.get $1 - call $~lib/typedarray/Int32Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.get $2 + memory.copy global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store offset=44 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 82 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 - local.get $0 - i32.const 3 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 0 + i32.store + 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 $2 + end + i32.const 2147483647 + local.set $3 end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/typedarray/Int8Array#fill global.get $~lib/memory/__stack_pointer - i32.const 48 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -10730,34 +11487,40 @@ local.get $1 local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 i32.ge_u if i32.const 1360 i32.const 1632 - i32.const 747 - i32.const 64 + i32.const 48 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl i32.add - local.get $2 - i32.store + i32.load8_s global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#at (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -10782,14 +11545,23 @@ local.get $1 local.get $0 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 i32.ge_u if i32.const 1360 i32.const 1632 - i32.const 736 - i32.const 64 + i32.const 1043 + i32.const 33 call $~lib/builtins/abort unreachable end @@ -10799,19 +11571,18 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + i64.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#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 12 i32.sub @@ -10842,29 +11613,6 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - i32.load - local.tee $5 - i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - i32.load offset=4 local.get $1 i32.const 0 i32.lt_s @@ -10872,9 +11620,9 @@ local.get $1 local.get $3 i32.add - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select @@ -10886,12 +11634,8 @@ i32.lt_s select end - local.tee $0 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $4 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $2 i32.const 0 i32.lt_s @@ -10899,9 +11643,9 @@ local.get $2 local.get $3 i32.add - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select @@ -10913,26 +11657,46 @@ i32.lt_s select end - local.tee $1 - local.get $0 - local.get $0 local.get $1 - i32.lt_s + 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 offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.sub + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl - i32.store offset=8 + i32.add + local.get $2 + i32.const 2 + i32.shl + memory.copy global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 ) - (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10947,47 +11711,74 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/array/Array#get:length + local.set $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + local.get $3 + i32.add + i32.lt_s + end if i32.const 1360 i32.const 1632 - i32.const 1457 - i32.const 64 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 local.get $0 i32.load offset=4 - local.get $1 - i32.const 3 + local.get $2 + i32.const 2 i32.shl i32.add - local.get $2 - f64.store global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#fill@varargs (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 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -11002,11 +11793,185 @@ unreachable end 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.store + 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 $2 + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#at (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 759 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#at (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 475 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#subarray (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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -11104,23 +12069,9 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) - (func $~lib/util/sort/SORT (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 f64) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i64) - (local $15 i32) - (local $16 i32) - (local $17 f64) - (local $18 f64) + (func $~lib/typedarray/Float64Array#at (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local $3 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11139,4670 +12090,4225 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1469 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#at (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1327 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if local.get $1 - i32.const 48 - i32.le_s + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - f64.load - local.set $9 - local.get $0 - f64.load offset=8 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store - local.get $0 - f64.load offset=16 - local.set $18 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $18 - local.get $9 - local.get $17 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $18 - local.get $2 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store offset=8 - local.get $0 - local.get $9 - local.get $18 - local.get $1 - select - f64.store offset=16 - end - local.get $0 - f64.load - local.set $9 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if local.get $0 - f64.load offset=8 - local.set $17 - i32.const 2 - global.set $~argumentsLength local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store - local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - f64.store offset=8 - br $folding-inner0 + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 end - i32.const 33 + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock + local.get $3 i32.const 4 i32.add - local.tee $11 + local.get $2 + i32.const -4 + i32.and i32.add - local.set $12 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $11 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + local.tee $3 + i32.store local.get $1 - i32.const 3 - i32.shl - call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $13 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 local.get $1 - i32.const 1 - i32.sub - local.tee $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load local.tee $1 - i32.const 32 - i32.lt_s + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $14 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $14 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $15 - local.get $11 - i32.add - local.tee $16 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $15 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $16 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $12 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $12 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end + i32.const 1504 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#sort (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store + local.get $4 local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) - (local $1 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 16320 - i32.lt_s + local.get $2 + i32.add + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array#sort - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store 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 1446 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8ClampedArray#__set (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1360 - i32.const 1632 - i32.const 320 - i32.const 45 + i32.const 0 + i32.const 1504 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.const 255 - local.get $2 - i32.sub - i32.const 31 - i32.shr_s - local.get $2 - i32.or - local.get $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8ClampedArray#__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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.store offset=4 local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 1360 - i32.const 1632 - i32.const 309 - i32.const 45 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#__set (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store local.get $1 + i32.store offset=96 local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 36 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store - local.get $1 local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $5 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length local.tee $0 - local.get $2 - i32.add - local.get $2 - local.get $0 local.get $0 + i32.load offset=4 + i32.const 1 local.get $2 - i32.gt_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.tee $2 - local.get $0 - local.get $3 - i32.add - local.get $3 - local.get $0 + i32.shl + 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 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.tee $0 - i32.lt_s + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $2 - local.get $4 - i32.add + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 49088 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + end local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $2 - i32.sub - memory.fill - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#get:length (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + 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 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#__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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 16000 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 16004 + i32.add + i32.load + i32.const 32 + i32.and end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 + local.set $3 + local.get $2 i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 25 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.set $1 local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) - (func $std/typedarray/isInt8ArrayEqual (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 - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + 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 16320 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + 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 0 - i32.store + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 + i32.const 16320 + i32.lt_s + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#__get - local.set $5 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.load offset=12 - i32.ge_u - if - i32.const 1360 - i32.const 1760 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - i32.ne - br_if $folding-inner1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1 return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int8Array#fill@varargs (param $0 i32) (param $1 i32) (param $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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 $2 - end - i32.const 2147483647 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $2 + i32.const 1 + i32.sub + local.tee $6 local.get $3 - call $~lib/typedarray/Int8Array#fill - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) - 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - i32.load - local.tee $5 - i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - 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 $0 + local.set $7 + local.get $6 + i32.const 1 i32.add - i32.store offset=4 - local.get $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 0 + local.set $2 + loop $for-loop|0 local.get $1 - 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.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/typedarray/Int32Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $0 - i32.add - local.get $2 - local.get $0 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - local.get $3 - i32.add - local.get $3 - local.get $0 - local.get $0 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$202 - local.get $1 - i32.eqz - local.get $1 - i32.const -1 - i32.eq - i32.or if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $4 + i32.add local.get $0 local.get $2 - i32.gt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $0 - local.get $2 - i32.sub - i32.const 2 - i32.shl - memory.fill - end - br $__inlined_func$~lib/util/bytes/FILL$202 + i32.add + i32.load8_u + i32.store8 + br $for-loop|0 end - loop $for-loop|0 + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add local.get $0 + local.get $6 + i32.add + i32.load8_u offset=1 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.add + i32.load8_u + local.set $8 local.get $2 - i32.gt_s + local.get $4 + i32.add + i32.load8_u + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $7 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s if - local.get $4 - local.get $2 - i32.const 2 - i32.shl + local.get $0 + local.get $1 i32.add + local.get $8 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 local.get $1 - i32.store + i32.add + local.get $7 + i32.store8 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|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1360 - i32.const 1760 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.tee $6 + local.get $3 i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $9 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/isInt32ArrayEqual (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + i64.load + i64.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $folding-inner0 + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 local.get $1 - call $~lib/array/Array#get:length local.get $3 - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - loop $for-loop|0 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + local.get $4 local.get $2 - local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $7) + i32.const 0 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $4 - i32.ne - br_if $folding-inner0 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store 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|2 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/typedarray/Int32Array#fill@varargs (param $0 i32) (param $1 i32) (param $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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 $2 - end - i32.const 2147483647 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $2 + i32.const 1 + i32.sub + local.tee $6 local.get $3 - call $~lib/typedarray/Int32Array#fill - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#slice (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - 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.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 local.get $1 - local.get $3 + local.get $2 i32.lt_s - select + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end 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 + loop $for-loop|1 local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 + local.get $6 i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 local.get $3 - i32.lt_s - select + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + 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 $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 + i32.const 1 + i32.sub + local.tee $6 local.get $3 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store 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 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.set $7 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/typedarray/Int32Array#slice@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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $outOfRange - global.get $~argumentsLength - br_table $1of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#slice - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $5 - local.get $0 - i32.load offset=4 - 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.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 + local.set $2 + loop $for-loop|0 local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - 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 + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load16_u + i32.store16 + br $for-loop|0 + end end - local.tee $2 - 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.add - local.tee $3 - i32.const 0 + loop $for-loop|1 local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $5 - local.get $4 - local.get $4 - local.get $5 + local.get $6 i32.gt_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 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int32Array#copyWithin@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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $7 + local.get $4 + local.get $2 + 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 (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 i32.sub - br_table $0of1 $1of1 $outOfRange + local.set $6 + else + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end - i32.const 2147483647 - local.set $3 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/typedarray/Int32Array#copyWithin - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 178 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 + local.tee $6 + local.get $3 i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $7 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) - 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $5 + local.set $2 loop $for-loop|0 + local.get $1 local.get $2 - local.get $5 i32.lt_s if local.get $2 + i32.const 1 + i32.sub + local.tee $2 local.get $4 i32.add - i32.load8_u - local.set $6 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $6 local.get $2 + i32.add + i32.load8_s + i32.store8 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add local.get $0 - local.get $1 - i32.load - call_indirect (type $6) - local.set $3 + local.get $6 + i32.add + i32.load8_s offset=1 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.add + i32.load8_s + local.set $8 local.get $2 + local.get $4 + i32.add + i32.load8_s + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $7 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.get $8 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.add + local.get $7 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 ) - (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $1 - local.get $0 - i32.load offset=8 + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 463 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl i32.add - local.get $2 - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint16Array#__set (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - 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 605 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + i64.load + i64.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#__set (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 889 - i32.const 64 - call $~lib/builtins/abort - unreachable + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $7) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - 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 1031 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + local.tee $6 + local.get $3 i32.add - local.get $2 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $7 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 1173 - i32.const 64 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + 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 $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - 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 1315 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.tee $6 + local.get $3 i32.add - local.get $2 - f32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $7 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#at (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load16_s + i32.store16 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 0 - local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 48 - i32.const 33 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $7 + local.get $4 + local.get $2 + 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 (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $9 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + f64.load + f64.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $10) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end ) - (func $~lib/typedarray/Uint8Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + f32.load + f32.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 0 + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $11) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/extendRunRight (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 $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 190 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=4 i32.add i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8ClampedArray#at (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 0 local.get $1 - i32.const 0 - i32.lt_s - select + i32.const 1 i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 332 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 + local.tee $4 local.get $0 - i32.load offset=4 i32.add i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#at (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 16320 - i32.lt_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_u offset=1 + local.get $5 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_u offset=1 + local.get $1 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 0 + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 475 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 + i32.const 3 i32.shl i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint16Array#at (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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 + i64.load local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=8 i32.const 1 - i32.shr_u - local.tee $2 - i32.const 0 - local.get $1 - i32.const 0 - i32.lt_s - select i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 617 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 + local.tee $4 + i32.const 3 i32.shl i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#at (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $1 - local.get $0 - i32.load offset=8 + i64.load i32.const 2 - i32.shr_u - local.tee $2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (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 $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 759 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#at (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 0 local.get $1 - i32.const 0 - i32.lt_s - select + i32.const 1 i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 901 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + local.tee $4 i32.const 2 i32.shl i32.add i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#at (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 0 - local.get $1 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 - local.get $2 - i32.ge_u + i32.gt_s if - i32.const 1360 - i32.const 1632 - i32.const 1043 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#at (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 0 + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (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 $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 1185 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 + i32.const 1 i32.shl i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#at (param $0 i32) (param $1 i32) (result f32) - (local $2 i32) - (local $3 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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 + i32.load16_u local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=8 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u i32.const 2 - i32.shr_u - local.tee $2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u offset=2 + local.get $5 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u offset=2 + local.get $1 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (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 $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 1327 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#at (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local $3 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store + i32.load8_s local.get $1 + i32.const 1 + i32.add + local.tee $4 local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_s offset=1 + local.get $5 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_s + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_s offset=1 + local.get $1 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 1469 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 i32.const 3 i32.shl i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + i64.load + local.get $0 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 ) - (func $~lib/typedarray/Uint8Array#reduceRight (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + (local $6 i32) + local.get $1 + local.get $2 + i32.eq if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 2 + i32.shl + i32.add + i32.load local.get $0 - call $~lib/typedarray/Int8Array#get:length + local.get $1 i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 local.get $4 - i32.add - i32.load8_u - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $6) - local.set $3 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $~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 3600 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3600 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=16 - loop $for-loop|0 + local.set $2 + loop $while-continue|1 + local.get $1 local.get $2 - local.get $4 i32.lt_s if - local.get $2 - local.get $6 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - i32.load8_s - local.set $7 - global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.load + local.set $5 + local.get $3 local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength local.get $2 - local.get $3 + i32.const 2 + i32.shl i32.add - local.get $7 - local.get $2 - local.get $0 - i32.const 3600 + local.tee $3 i32.load - call_indirect (type $1) - i32.store8 - local.get $2 + i32.store + local.get $1 i32.const 1 i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub local.set $2 - br $for-loop|0 + br $while-continue|1 end end - local.get $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 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + end + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (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 $1 + local.get $2 + i32.eq + if local.get $1 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + local.get $0 + local.get $1 i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint8Array#__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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 167 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $4 + i32.const 1 + i32.shl 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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - global.get $~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 3632 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3632 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=16 - loop $for-loop|0 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_s offset=2 + local.get $5 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 i32.lt_s if - local.get $2 - local.get $6 + local.get $0 + local.get $1 + i32.const 1 + i32.shl i32.add - i32.load8_u - local.set $7 - global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.load16_s + local.set $5 + local.get $3 local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength local.get $2 - local.get $3 + i32.const 1 + i32.shl i32.add - local.get $7 + local.tee $3 + i32.load16_s + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) local.get $0 - i32.const 3632 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_s offset=2 + local.get $1 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - call_indirect (type $1) - i32.store8 - local.get $2 + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $4 + br $while-continue|2 end end - local.get $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 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#__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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $4 ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - (local $5 i32) + (local $5 f64) (local $6 i32) - (local $7 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 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~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 3664 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3664 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=16 - loop $for-loop|0 + (local $7 f64) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 local.get $4 - i32.lt_s - if - local.get $2 - local.get $6 - i32.add - i32.load8_u - local.set $7 - global.get $~lib/memory/__stack_pointer + i32.gt_s + if (result i32) local.get $0 - i32.store offset=8 + local.get $4 i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 global.set $~argumentsLength - local.get $2 local.get $3 - i32.add - local.get $7 - local.get $2 - local.get $0 - i32.const 3664 i32.load - call_indirect (type $1) - i32.store8 - local.get $2 + call_indirect (type $10) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $4 + br $while-continue|0 end end - local.get $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 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $4 ) - (func $~lib/typedarray/Int16Array#__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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u + local.get $2 + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 452 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load local.get $0 - i32.load offset=4 local.get $1 i32.const 1 - i32.shl i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $4 + i32.const 2 + i32.shl 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) - (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - global.get $~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 3696 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3696 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 local.get $4 - i32.lt_s - if + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength local.get $3 + i32.load + call_indirect (type $11) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 i32.shl - local.tee $8 i32.add - i32.load16_s - local.set $9 - global.get $~lib/memory/__stack_pointer + local.tee $3 + f32.load + local.set $5 + local.get $3 local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength local.get $2 - local.get $8 + i32.const 2 + i32.shl i32.add - local.get $9 + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) local.get $0 - i32.const 3696 - i32.load - call_indirect (type $1) - i32.store16 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $4 + br $while-continue|2 end end - 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 $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int16Array#__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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $4 ) - (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (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 - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + ) + (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 + local.tee $2 + i32.const 10 + i32.lt_u if - i32.const 49120 - i32.const 49168 - i32.const 1 + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=8 + i32.const 255 + i32.and + local.set $1 + i32.const 3 + local.get $1 + i32.const 10 + i32.ge_u i32.const 1 - i32.shr_u + i32.add + local.get $1 + i32.const 100 i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 594 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + select + local.set $2 local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 ) - (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 i64) (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - global.get $~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 3728 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3728 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + local.get $0 + local.set $2 + local.get $1 + i64.const 10 + i64.lt_u + if local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - local.tee $7 + local.get $1 + i64.const 48 + i64.or + i64.store16 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 + return + end + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 + i32.const 100 + i32.lt_u + if (result i32) local.get $3 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl - local.tee $8 i32.add - i32.load16_u - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + else + local.get $3 + 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 $0 - i32.const 3728 - i32.load - call_indirect (type $1) - i32.store16 + 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 1 + 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 - local.get $1 - local.get $2 - i32.store - local.get $1 + local.set $0 local.get $2 - call $~lib/rt/itcms/__link - local.get $1 + local.get $3 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else local.get $2 - i32.store offset=4 local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $1 - 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 + 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.tee $0 + call $~lib/util/number/utoa64_dec_lut + 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 $1 + i32.const 48 + i32.or + i32.store16 i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 + return + end + local.get $0 + local.get $1 + 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 - call $~lib/builtins/abort - unreachable + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + else local.get $1 - 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 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" - (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + local.get $1 + i32.const 65535 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u + if local.get $0 - i32.const 0 + local.get $2 + i32.const 48 + i32.or + i32.store16 i32.const 1 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + return + end + local.get $1 + i32.const 65535 + i32.and + local.set $1 + 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.const 2 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $~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 3760 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3760 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 - i32.add - i32.load - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $0 - i32.const 3760 - i32.load - call_indirect (type $1) - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - 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 $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__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 16 + i32.const 1000 + i32.ge_u i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 ) - (func $~lib/typedarray/Uint32Array#__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 16320 + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.extend8_s + local.tee $3 + i32.const 0 i32.lt_s + local.tee $2 if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const -128 + i32.eq + if + local.get $0 + i64.const 15762813447372845 + i64.store + i32.const 4 + return + end + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u + i32.extend8_s + local.tee $3 + i32.const 10 + i32.lt_u if - i32.const 1360 - i32.const 1632 - i32.const 878 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $1 + i32.extend8_s + 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 $3 local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>" - (local $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - global.get $~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 3792 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3792 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + local.get $1 + i64.const 0 + i64.lt_s + local.tee $3 + if local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.const 45 + i32.store16 + i64.const 0 + local.get $1 + i64.sub + local.set $1 + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $1 + i64.const 10 + i64.lt_u + if local.get $4 - i32.const 2 - i32.shl - local.tee $7 + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $3 i32.const 1 - call $~lib/rt/itcms/__new + i32.add + return + end + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 + 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 - i32.load - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + else + local.get $2 + i32.const 10000 + i32.ge_u i32.const 3 - global.set $~argumentsLength + i32.add local.get $2 - local.get $8 + i32.const 1000 + i32.ge_u i32.add - local.get $9 - local.get $3 - local.get $0 - i32.const 3792 - i32.load - call_indirect (type $1) - i32.store - local.get $3 - i32.const 1 + 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 - local.set $3 - br $for-loop|0 end end - local.get $1 - local.get $2 - i32.store - local.get $1 + local.set $0 + local.get $4 local.get $2 - call $~lib/rt/itcms/__link + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $4 local.get $1 - local.get $2 - i32.store offset=4 local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + local.get $3 + i32.add + ) + (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.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 local.get $1 - i32.store offset=4 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $0 + local.get $1 + 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 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + local.get $2 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -32768 + i32.eq + if + local.get $0 + i64.const 15481338470793261 + i64.store + local.get $0 + i32.const 3670070 + i32.store offset=8 + i32.const 6 + return + end + local.get $0 + i32.const 45 + i32.store16 i32.const 0 - call $~lib/typedarray/Uint32Array#__get + local.get $1 + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 + i32.add + return + end + local.get $1 + i32.extend16_s + 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 - call $~lib/builtins/abort - unreachable + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add end - global.get $~lib/memory/__stack_pointer + else local.get $1 - i32.store offset=4 + 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 $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne + f64.const 0 + f64.eq if - i32.const 0 - i32.const 1568 - i32.const 389 + 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 - call $~lib/builtins/abort + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + 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 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + 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 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end unreachable end - global.get $~lib/memory/__stack_pointer + local.get $0 local.get $1 - i32.store offset=4 + i32.const 0 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) + (local $2 f64) + (local $3 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.ne + f64.promote_f32 + local.tee $2 + f64.const 0 + f64.eq if - i32.const 0 - i32.const 1568 - i32.const 390 + 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 - call $~lib/builtins/abort + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $2 + local.get $2 + f64.sub + f64.const 0 + f64.ne + if + local.get $2 + local.get $2 + 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 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $2 + f64.const 0 + f64.lt + local.tee $3 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $0 + local.get $2 + i32.const 1 + call $~lib/util/number/dtoa_core end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) + (func $~lib/typedarray/Uint8ClampedArray#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.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15817,262 +16323,215 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer 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 1020 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 local.get $0 i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/typedarray/testArrayMap<~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 i32) - (local $8 i32) - (local $9 i64) - 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 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - global.get $~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 3824 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3824 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 3 - i32.shl - local.tee $8 - i32.add - i64.load - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $0 - i32.const 3824 - i32.load - call_indirect (type $24) - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.tee $1 + i32.const 0 local.get $1 i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.gt_s + select + else local.get $1 - i32.store offset=4 + local.get $2 local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i64) + (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 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 - end + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.ne + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + local.get $3 + i32.add + i32.lt_s + end + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 390 + local.get $0 + local.get $2 + i32.add + local.get $1 + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + i64.load + local.tee $4 + i32.wrap_i64 + local.tee $5 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i64.extend_i32_s + i32.const 255 + local.get $5 + i32.sub + i32.const 31 + i32.shr_s + i64.extend_i32_s + local.get $4 + i64.or + i64.and + i64.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16087,262 +16546,405 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + local.get $3 + i32.add + i32.lt_s + end if i32.const 1360 i32.const 1632 - i32.const 1162 - i32.const 64 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + local.get $2 local.get $0 i32.load offset=4 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 3 - i32.shl + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + i32.const 255 + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.tee $1 + i32.sub + i32.const 31 + i32.shr_s + local.get $1 + i32.or + local.get $1 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + 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 12 i32.add - i64.load + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + call $~lib/typedarray/Uint8Array#join global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>" - (local $0 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) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - global.get $~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 3856 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3856 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $7 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 3 - i32.shl - local.tee $8 - i32.add - i64.load - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $0 - i32.const 3856 - i32.load - call_indirect (type $24) - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.tee $1 + i32.const 0 local.get $1 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.gt_s + select + else local.get $1 - i32.store offset=4 + local.get $2 local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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) + 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $6) + local.set $3 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.ne + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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) + 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $6) + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) + (func $~lib/typedarray/Uint8Array#forEach (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.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16357,885 +16959,516 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 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 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $4) + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#__uget (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 16320 + i32.lt_s if - i32.const 1360 - i32.const 1632 - i32.const 1304 - i32.const 64 + i32.const 49120 + i32.const 49168 + 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.store + local.get $1 local.get $0 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl i32.add - f32.load + i32.load8_u global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>" - (local $0 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) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - global.get $~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 3888 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3888 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $7 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 - i32.add - f32.load - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $0 - i32.const 3888 - i32.load - call_indirect (type $29) - f32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.tee $1 + i32.const 0 local.get $1 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.gt_s + select + else local.get $1 - i32.store offset=4 + local.get $2 local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#sort (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 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 - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#some (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 f64) + (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~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 3920 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3920 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $7 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) loop $for-loop|0 - local.get $3 + local.get $2 local.get $4 i32.lt_s if - local.get $6 local.get $3 + local.get $2 i32.const 3 i32.shl - local.tee $8 i32.add - f64.load - local.set $9 + i64.load + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 1 + local.get $5 local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 local.get $0 - i32.const 3920 + local.get $1 i32.load - call_indirect (type $30) - f64.store - local.get $3 + call_indirect (type $8) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end - 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 $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" - (local $0 i32) + (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) (local $1 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#findLastIndex (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 $4 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3952 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3952 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" loop $for-loop|0 local.get $2 - local.get $3 - i32.lt_s + i32.const 0 + i32.ge_s if + local.get $3 local.get $2 - local.get $7 + i32.const 3 + i32.shl i32.add - i32.load8_s - local.set $5 + i64.load global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $2 - local.get $8 - i32.const 3952 + local.get $0 + local.get $1 i32.load - call_indirect (type $1) - if - local.get $0 - local.get $4 - i32.add - local.get $5 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -1 + local.set $2 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#findIndex (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 $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 6 - call $~lib/typedarray/Uint8Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3984 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3984 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if + local.get $3 local.get $2 - local.get $7 + i32.const 3 + i32.shl i32.add - i32.load8_u - local.set $5 + i64.load global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $2 - local.get $8 - i32.const 3984 + local.get $0 + local.get $1 i32.load - call_indirect (type $1) - if - local.get $0 - local.get $4 - i32.add - local.get $5 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" local.get $2 i32.const 1 i32.add @@ -17243,262 +17476,87 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -1 + local.set $2 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#every (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 $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 6 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4016 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4016 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if + local.get $3 local.get $2 - local.get $7 + i32.const 3 + i32.shl i32.add - i32.load8_u + i64.load local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 0 local.get $5 local.get $2 - local.get $8 - i32.const 4016 + local.get $0 + local.get $1 i32.load - call_indirect (type $1) - if - local.get $0 - local.get $4 - i32.add - local.get $5 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $8) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -17506,268 +17564,268 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) + (local $2 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 6 - call $~lib/typedarray/Int16Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 + 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.tee $1 + local.get $0 + local.get $0 + local.get $1 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint32Array#sort (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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) + 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $7 + local.get $3 local.get $2 - i32.const 1 + i32.const 2 i32.shl i32.add - i32.load16_s + i32.load local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 1 local.get $5 local.get $2 - local.get $8 - i32.const 4048 + local.get $0 + local.get $1 i32.load call_indirect (type $1) - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -17775,131 +17833,22 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - i32.const 1 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" - (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) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -17911,57 +17860,22 @@ 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 6 - call $~lib/typedarray/Uint16Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4080 - i32.store offset=8 + i32.const 9584 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17969,188 +17883,144 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4080 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $3 + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1413 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + end + local.get $6 + i32.eqz + if local.get $5 - local.get $2 - local.get $8 - i32.const 4080 i32.load - call_indirect (type $1) - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - local.get $4 - local.get $0 - i32.const 1 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + 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 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + 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 $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end i32.const 49120 @@ -18160,430 +18030,157 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint32Array#findLastIndex (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 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 6 - call $~lib/typedarray/Int32Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4112 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4112 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" loop $for-loop|0 local.get $2 - local.get $3 - i32.lt_s + i32.const 0 + i32.ge_s if - local.get $7 + local.get $3 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $2 - local.get $8 - i32.const 4112 + local.get $0 + local.get $1 i32.load call_indirect (type $1) - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -1 + local.set $2 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint32Array#findIndex (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 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 6 - call $~lib/typedarray/Uint32Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4144 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4144 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $7 + local.get $3 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $2 - local.get $8 - i32.const 4144 + local.get $0 + local.get $1 i32.load call_indirect (type $1) - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" local.get $2 i32.const 1 i32.add @@ -18591,271 +18188,87 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -1 + local.set $2 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint32Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 6 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4176 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4176 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int64Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $7 + local.get $3 local.get $2 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load + i32.load local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 0 local.get $5 local.get $2 - local.get $8 - i32.const 4176 + local.get $0 + local.get $1 i32.load - call_indirect (type $8) - if - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -18863,131 +18276,290 @@ br $for-loop|0 end end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#__uget (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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + 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.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.get $2 + i32.add + local.tee $1 + i32.const 0 local.get $1 - 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 - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.gt_s + select + else local.get $1 - i32.store offset=4 + local.get $2 local.get $1 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $2 + i32.lt_s + select end - i32.const 49120 - i32.const 49168 - i32.const 1 + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" - (local $0 i32) + (func $~lib/typedarray/Uint16Array#sort (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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) + 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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 (type $1) + 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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result 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) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -18999,57 +18571,22 @@ 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 6 - call $~lib/typedarray/Uint64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=4 - local.get $8 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4208 - i32.store offset=8 + i32.const 9584 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19057,188 +18594,144 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4208 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int64Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $3 + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1411 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if - local.get $7 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + end + local.get $6 + i32.eqz + if local.get $5 - local.get $2 - local.get $8 - i32.const 4208 - i32.load - call_indirect (type $8) + i32.load16_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s if - local.get $4 local.get $0 - i32.const 3 + local.get $1 + i32.const 1 i32.shl i32.add local.get $5 - i64.store - local.get $0 + local.get $3 i32.const 1 + i32.shl i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 + 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 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + 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 $2 + local.get $0 + local.get $1 + 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 $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end i32.const 49120 @@ -19248,430 +18741,157 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint16Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 6 - call $~lib/typedarray/Float32Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4240 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4240 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" loop $for-loop|0 local.get $2 - local.get $3 - i32.lt_s + i32.const 0 + i32.ge_s if - local.get $7 + local.get $3 local.get $2 - i32.const 2 + i32.const 1 i32.shl i32.add - f32.load - local.set $5 + i32.load16_u global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $2 - local.get $8 - i32.const 4240 + local.get $0 + local.get $1 i32.load - call_indirect (type $14) - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -1 + local.set $2 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - 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 6 - call $~lib/typedarray/Float64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4272 - i32.store offset=8 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4272 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int64Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $7 + local.get $3 local.get $2 - i32.const 3 + i32.const 1 i32.shl i32.add - f64.load - local.set $5 + i32.load16_u global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $2 - local.get $8 - i32.const 4272 + local.get $0 + local.get $1 i32.load - call_indirect (type $15) - if - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" local.get $2 i32.const 1 i32.add @@ -19679,120 +18899,16 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - 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 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -1 + local.set $2 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19818,48 +18934,51 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 + 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 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) loop $for-loop|0 local.get $2 local.get $4 i32.lt_s if - local.get $2 local.get $3 + local.get $2 + i32.const 1 + i32.shl i32.add - i32.load8_s + i32.load16_u local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - i32.const 1 + i32.const 0 local.get $5 local.get $2 local.get $0 local.get $1 i32.load call_indirect (type $1) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" drop local.get $2 i32.const 1 @@ -19868,20 +18987,16 @@ br $for-loop|0 end end - i32.const 0 + i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (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) + (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19896,75 +19011,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $1) - 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 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) + (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) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19982,68 +19050,27 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $1) - 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20069,36 +19096,34 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 + 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 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) 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 + local.get $3 i32.add - i32.load16_u + i32.load8_s local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 @@ -20112,7 +19137,7 @@ local.get $1 i32.load call_indirect (type $1) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" drop local.get $2 i32.const 1 @@ -20128,11 +19153,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (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 12 i32.sub @@ -20154,155 +19177,81 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $1) - 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 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16320 + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + i32.const 6 + i32.add i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $1 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 - call $~lib/typedarray/Int32Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $1) - 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 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 0 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20324,70 +19273,80 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + 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 + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 - call $~lib/typedarray/Int64Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $8) - 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 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 0 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (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) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20409,70 +19368,58 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $8) - 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 7 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 f32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20494,155 +19441,264 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $1 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - loop $for-loop|0 + i32.lt_s + if + local.get $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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $14) - 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 + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 0 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result 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 f64) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 16320 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 - local.set $3 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 + call $~lib/typedarray/Int8Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1408 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if - local.get $3 - local.get $2 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - f64.load - local.set $5 + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_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 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + 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 $2 + local.get $0 + local.get $1 + 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 $1 + i32.add + local.tee $1 + i32.gt_s + if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 + i32.store local.get $0 local.get $1 - i32.load - call_indirect (type $15) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" - drop - local.get $2 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findLastIndex (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 @@ -20681,12 +19737,14 @@ i32.store offset=8 local.get $0 call $~lib/typedarray/Int8Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" loop $for-loop|0 local.get $2 - local.get $4 - i32.lt_s + i32.const 0 + i32.ge_s if local.get $2 local.get $3 @@ -20702,10 +19760,10 @@ local.get $1 i32.load call_indirect (type $1) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 br $for-loop|0 end @@ -20719,7 +19777,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20763,7 +19821,7 @@ local.get $0 call $~lib/typedarray/Int8Array#get:length local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" loop $for-loop|0 local.get $2 local.get $4 @@ -20772,7 +19830,7 @@ local.get $2 local.get $3 i32.add - i32.load8_u + i32.load8_s global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -20783,7 +19841,7 @@ local.get $1 i32.load call_indirect (type $1) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" local.get $2 i32.const 1 i32.add @@ -20800,7 +19858,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20842,31 +19900,34 @@ local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int16Array#get:length + call $~lib/typedarray/Int8Array#get:length local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) 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 + local.get $3 i32.add - i32.load16_s + i32.load8_s + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 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 (type $1) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -20874,20 +19935,17 @@ br $for-loop|0 end end - i32.const -1 - local.set $2 + i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint16Array#findIndex (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) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20913,149 +19971,89 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|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_u - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - 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 - end - end - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (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) + call $~lib/typedarray/Int64Array#get:length + local.set $2 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $3 i32.store offset=8 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 $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 + local.get $3 local.get $0 i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + 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 + end + local.tee $1 local.get $0 - i32.store offset=8 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - 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 - end - end - i32.const -1 - local.set $2 - end + local.get $1 + 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 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) - (func $~lib/typedarray/Uint32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (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) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21073,66 +20071,27 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $0 i32.load offset=4 - local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - 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 - end - end - i32.const -1 - local.set $2 - end + call $~lib/typedarray/Int64Array#get:length global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + 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/Int64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21176,7 +20135,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + block $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) loop $for-loop|0 local.get $2 local.get $4 @@ -21188,17 +20147,21 @@ i32.shl i32.add i64.load + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 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 (type $8) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -21206,20 +20169,16 @@ br $for-loop|0 end end - i32.const -1 - local.set $2 + i32.const 0 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21248,144 +20207,69 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 call $~lib/typedarray/Int64Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $8) - 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 - end - end - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer 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) - 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 16320 i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $14) - 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 - end + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.add + i64.load8_u + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21414,142 +20298,52 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 call $~lib/typedarray/Int64Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $15) - 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 - end - end - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - ) - (func $~lib/typedarray/Int8Array#findLastIndex (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 6 + i32.add i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 i32.load offset=4 - local.set $3 + i32.const 48 + i32.add global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end + local.get $1 + i32.load offset=4 + local.get $2 + i32.const 3 + i32.shl + memory.copy global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint8Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21578,60 +20372,77 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end + i32.load offset=4 + i32.const 32 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i64.load16_s + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Int16Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#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 @@ -21657,65 +20468,78 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 11264 i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int64Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub + i32.load offset=4 + i32.const 56 + i32.add local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i64.load8_s + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint16Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#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 @@ -21741,65 +20565,449 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 11008 i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int64Array#get:length + local.get $1 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub + i32.load offset=4 local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i64.load32_s + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Int32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (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) + 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 16320 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + 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 16320 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$5 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$5 + end + block $folding-inner0 + local.get $6 + i32.eqz + if + block $__inlined_func$~lib/util/number/itoa64 (result i32) + local.get $5 + i64.load + i64.extend32_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 16320 + 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 8000 + 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 + i32.const 1 + i32.shl + local.tee $0 + 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 + 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 $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $0 + local.get $1 + i32.add + local.get $3 + local.get $4 + 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 $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $0 + local.get $1 + i32.add + local.get $2 + local.get $3 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + end + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 21 + i32.add + local.get $6 + i32.mul + i32.const 21 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + 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 $1 + i32.add + local.set $1 + local.get $7 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $7 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $7 + 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 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 $1 + i32.add + local.tee $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$5 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21837,11 +21045,11 @@ local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int32Array#get:length + call $~lib/typedarray/Int64Array#get:length i32.const 1 i32.sub local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" loop $for-loop|0 local.get $2 i32.const 0 @@ -21849,10 +21057,10 @@ if local.get $3 local.get $2 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + i64.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -21862,8 +21070,8 @@ local.get $0 local.get $1 i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" local.get $2 i32.const 1 i32.sub @@ -21880,10 +21088,11 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/typedarray/Uint32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (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) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21921,22 +21130,20 @@ local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" loop $for-loop|0 local.get $2 - i32.const 0 - i32.ge_s + local.get $4 + i32.lt_s if local.get $3 local.get $2 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + i64.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -21946,11 +21153,11 @@ local.get $0 local.get $1 i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 br $for-loop|0 end @@ -21964,10 +21171,11 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/typedarray/Int64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) + (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22006,14 +21214,12 @@ i32.store offset=8 local.get $0 call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - i32.const 0 - i32.ge_s + local.get $4 + i32.lt_s if local.get $3 local.get $2 @@ -22021,39 +21227,40 @@ i32.shl i32.add i64.load + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 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 (type $8) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" + drop local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 br $for-loop|0 end end - i32.const -1 - local.set $2 + i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) + (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22068,74 +21275,70 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 i32.load offset=4 - local.set $3 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#sort (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 - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $8) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + 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/Float32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22174,52 +21377,51 @@ i32.store offset=8 local.get $0 call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - i32.const 0 - i32.ge_s + local.get $4 + i32.lt_s if local.get $3 local.get $2 i32.const 2 i32.shl i32.add - f32.load + i32.load + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 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 (type $14) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" + drop local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 br $for-loop|0 end end - i32.const -1 - local.set $2 + i32.const 0 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Float64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22248,63 +21450,70 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $15) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.add + i32.load8_u + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (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 12 i32.sub @@ -22326,153 +21535,83 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $1) - 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 - end - end - i32.const 1 - end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16320 + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 6 + i32.add i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $1 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 - call $~lib/typedarray/Int8Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $1) - 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 - end + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store32 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#set<~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 12 i32.sub @@ -22494,71 +21633,84 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + 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 + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 - call $~lib/typedarray/Int16Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $1) - 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 + local.get $2 + i32.lt_s + if + local.get $3 + 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 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (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 12 i32.sub @@ -22580,157 +21732,272 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $1) - 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 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 28 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + 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 $3 + i32.add + i32.load8_s + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result 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) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 16320 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 - local.set $3 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 call $~lib/typedarray/Int32Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1412 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if - local.get $3 - local.get $2 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + end + local.get $6 + i32.eqz + if + local.get $5 i32.load - local.set $5 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + 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 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + 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 $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + 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 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 + i32.store local.get $0 local.get $1 - i32.load - call_indirect (type $1) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - local.get $2 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint32Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findLastIndex (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 @@ -22752,29 +22019,31 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 + 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 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" loop $for-loop|0 local.get $2 - local.get $4 - i32.lt_s + i32.const 0 + i32.ge_s if local.get $3 local.get $2 @@ -22782,41 +22051,38 @@ i32.shl i32.add i32.load - local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 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 (type $1) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 br $for-loop|0 end end - i32.const 1 + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22838,25 +22104,25 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 + 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 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" loop $for-loop|0 local.get $2 local.get $4 @@ -22864,26 +22130,21 @@ if local.get $3 local.get $2 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load - local.set $5 + i32.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 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 (type $8) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" - drop + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" local.get $2 i32.const 1 i32.add @@ -22891,18 +22152,20 @@ br $for-loop|0 end end - i32.const 1 + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Uint64Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22924,25 +22187,25 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 + 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 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) loop $for-loop|0 local.get $2 local.get $4 @@ -22950,10 +22213,10 @@ if local.get $3 local.get $2 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load + i32.load local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 @@ -22966,9 +22229,9 @@ local.get $0 local.get $1 i32.load - call_indirect (type $8) + call_indirect (type $1) i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" drop local.get $2 i32.const 1 @@ -22984,13 +22247,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (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) + (func $~lib/typedarray/Int32Array#__uget (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23005,76 +22264,177 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 (type $14) - 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 - end - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + 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 end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Float64Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -23096,25 +22456,25 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) - 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 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 + 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 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) loop $for-loop|0 local.get $2 local.get $4 @@ -23122,25 +22482,24 @@ if local.get $3 local.get $2 - i32.const 3 + i32.const 1 i32.shl i32.add - f64.load + i32.load16_s local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - i32.const 0 + i32.const 1 local.get $5 local.get $2 local.get $0 local.get $1 i32.load - call_indirect (type $15) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" drop local.get $2 i32.const 1 @@ -23149,16 +22508,18 @@ br $for-loop|0 end end - i32.const 1 + i32.const 0 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) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23173,64 +22534,82 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store local.get $0 - i32.const 255 - i32.and - i32.const 7152 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 538 + i32.const 1360 + i32.const 1632 + i32.const 1902 i32.const 5 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.add + i32.load8_u + i32.store16 + 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 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (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 12 i32.sub @@ -23259,40 +22638,65 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int16Array#get:length + local.get $2 + i32.const 6 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 + i32.load offset=4 + i32.const 12 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 loop $for-loop|0 + local.get $0 local.get $2 - local.get $4 i32.lt_s if - local.get $2 local.get $3 + local.get $0 + i32.const 1 + i32.shl i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=8 i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.shl + i32.add + i64.load + i64.store16 local.get $0 - local.get $1 - i32.load - call_indirect (type $4) - local.get $2 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -23301,9 +22705,10 @@ 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) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23318,62 +22723,67 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store local.get $0 - i32.const 65535 - i32.and - i32.const 7152 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne + i32.const 4 + i32.add + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 538 + i32.const 1360 + i32.const 1632 + i32.const 1902 i32.const 5 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 8 i32.add - global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $2 + i32.const 1 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23388,58 +22798,89 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne + i32.const 7 + i32.add + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 538 + i32.const 1360 + i32.const 1632 + i32.const 1902 i32.const 5 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 14 i32.add - global.set $std/typedarray/forEachCallCount + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i32.load8_s + i32.store16 + 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 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) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23454,59 +22895,277 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 i32.store - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length local.get $1 - i32.ne + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 537 + i32.const 1360 + i32.const 1632 + i32.const 1902 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 538 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end 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.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) + (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) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1410 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load16_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + 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 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + 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 $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int16Array#findLastIndex (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 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23521,59 +23180,77 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 i32.store - i32.const 7152 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__get - f32.convert_i32_s + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - 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 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) + (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) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23588,67 +23265,75 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 i32.store - i32.const 7152 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__get - f64.convert_i32_s + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - 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 538 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + 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 - 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.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23663,159 +23348,74 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 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 + local.get $0 + i32.store offset=8 local.get $0 i32.load offset=4 - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.tee $5 - i32.const 1 - i32.gt_u - if - local.get $5 - i32.const 1 - i32.shr_u - local.set $4 - local.get $5 - i32.const 8 - i32.sub - local.set $6 - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.add + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + loop $for-loop|0 + local.get $2 local.get $4 - i32.lt_u + i32.lt_s if - local.get $1 - local.get $2 - i32.add - local.tee $7 - i64.load - 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.set $3 - local.get $7 - local.get $2 - local.get $6 - i32.add - local.get $1 - i32.sub - local.tee $7 - i64.load - local.tee $8 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $8 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $8 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $8 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - i64.store - local.get $7 - local.get $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 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $4 - i32.lt_u - if - local.get $1 local.get $2 + i32.const 1 + i32.shl i32.add - local.tee $6 - i32.load8_u - local.set $7 - local.get $6 - local.get $2 + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 local.get $5 + local.get $2 + local.get $0 local.get $1 - i32.sub - i32.add - local.tee $6 - i32.load8_u - i32.store8 - local.get $6 - local.get $7 - i32.store8 - local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" + drop + local.get $2 i32.const 1 i32.add - local.set $1 - br $while-continue|1 + local.set $2 + br $for-loop|0 end end + i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23831,200 +23431,120 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $0 i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - i32.store offset=8 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int8Array#reverse - drop + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Int8Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.extend8_s - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + unreachable end + i32.const 1696 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1696 + i32.store end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 + i32.store offset=8 + local.get $0 local.get $1 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.set $1 + call $~lib/typedarray/Float64Array#sort global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=20 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 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 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int64Array#get:length global.get $~lib/memory/__stack_pointer - i32.const 24 + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) + (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) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -24050,88 +23570,70 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 (type $12) + 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 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" - (local $0 i32) + (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f64) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24147,202 +23649,199 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store offset=8 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $3 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|0 local.get $1 - local.get $0 - i32.const 7616 - 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 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 local.get $3 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + local.set $4 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + f64.store + local.get $6 + local.get $4 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=20 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.ne + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + call $~lib/util/string/joinFloatArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#findLastIndex (param $0 i32) (param $1 i32) (result 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $12) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) + (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) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -24368,88 +23867,66 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - 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 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $12) + 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 + end + end + i32.const -1 + local.set $2 end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8>" - (local $0 i32) - (local $1 i32) + (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) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24464,207 +23941,73 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $1 i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.get $0 i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - 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 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + loop $for-loop|0 + local.get $2 local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne + i32.lt_s if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $12) + 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 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 end + i32.const 1 end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (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 $6 i32) - (local $7 i32) + (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24688,110 +24031,17 @@ i32.store local.get $0 i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $3 - local.get $4 - i32.const 2 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $1 - i32.const 1 - i32.add - local.get $3 - i32.lt_u - if - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $6 - i32.load - i32.const 16 - i32.rotr - local.set $7 - local.get $6 - local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $6 - i32.load - i32.const 16 - i32.rotr - i32.store - local.get $6 - local.get $7 - i32.store - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - local.set $6 - local.get $5 - local.get $2 - local.get $4 - local.get $1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - i32.store16 - local.get $5 - local.get $6 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|1 - end - end - end + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/typedarray/Int16Array#subarray (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) @@ -24823,11 +24073,11 @@ local.get $0 i32.store offset=4 local.get $0 - call $~lib/typedarray/Int16Array#get:length + call $~lib/typedarray/Int32Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 7 + i32.const 13 call $~lib/rt/itcms/__new local.tee $3 i32.store offset=8 @@ -24855,7 +24105,7 @@ i32.gt_s select local.tee $0 - i32.const 1 + i32.const 2 i32.shl i32.add i32.store offset=4 @@ -24889,7 +24139,7 @@ select local.get $0 i32.sub - i32.const 1 + i32.const 2 i32.shl i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -24898,14 +24148,11 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $"std/typedarray/testArrayReverse<~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) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24920,200 +24167,34 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int16Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Int16Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.extend16_s - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 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 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 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 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int32Array#get:length global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) + (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) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -25139,92 +24220,70 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 (type $13) + 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 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" - (local $0 i32) + (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -25240,207 +24299,201 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - i32.store offset=8 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $3 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|0 local.get $1 - local.get $0 - i32.const 7616 - 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 $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int16Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 local.get $3 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load + local.set $4 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load + f32.store + local.get $6 + local.get $4 + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#reverse - local.tee $0 - i32.store offset=20 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.ne + call $~lib/typedarray/Int32Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + call $~lib/util/string/joinFloatArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#findLastIndex (param $0 i32) (param $1 i32) (result 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + global.get $~lib/memory/__stack_pointer 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 578 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $13) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) + (local $5 f32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -25455,80 +24508,75 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 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 + local.get $0 + i32.store offset=8 local.get $0 i32.load offset=4 - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 local.get $0 call $~lib/typedarray/Int32Array#get:length - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s if + local.get $3 local.get $2 - local.get $1 i32.const 2 i32.shl i32.add - local.tee $6 - i32.load - local.set $4 - local.get $6 + f32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength local.get $2 - local.get $5 + local.get $0 local.get $1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.tee $6 i32.load - i32.store - local.get $6 - local.get $4 - i32.store - local.get $1 + call_indirect (type $13) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + local.get $2 i32.const 1 i32.add - local.set $1 - br $while-continue|0 + local.set $2 + br $for-loop|0 end end + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32>" - (local $0 i32) - (local $1 i32) + (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) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -25543,202 +24591,75 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $1 i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.get $0 i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int32Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Int32Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + loop $for-loop|0 local.get $2 - i32.ne + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $13) + 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 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 end + i32.const 1 end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (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/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -25753,311 +24674,333 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load - local.tee $4 i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 local.get $0 i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 + local.get $1 i32.const 2 i32.shl i32.add - i32.store offset=4 - local.get $3 + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 + i32.const 256 + i32.lt_u + if local.get $1 - i32.const 0 - i32.gt_s - select + i32.const 4 + i32.shr_u + local.set $1 else local.get $1 - local.get $2 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 local.get $2 - i32.lt_s - select + i32.const 7 + i32.sub + local.set $2 end - local.tee $1 - local.get $0 - local.get $0 local.get $1 - 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 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $"std/typedarray/testArrayReverse<~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 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint32Array#constructor + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and local.tee $1 - i32.store offset=12 - loop $for-loop|0 + if (result i32) local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int32Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - local.get $2 - i32.ne + i32.load offset=4 + local.tee $2 + i32.eqz if i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 + i32.const 1504 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 1 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl i32.add - local.set $0 - br $for-loop|1 + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 - i32.ne + i64.extend_i32_u + i64.lt_u if i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 1504 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 - i32.ne + i32.load offset=1568 + local.tee $3 if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.ne + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) + i32.const 7152 + call $~lib/rt/itcms/__visit + i32.const 7616 + call $~lib/rt/itcms/__visit + i32.const 7728 + call $~lib/rt/itcms/__visit + i32.const 10928 + call $~lib/rt/itcms/__visit + i32.const 11008 + call $~lib/rt/itcms/__visit + i32.const 11088 + call $~lib/rt/itcms/__visit + i32.const 11184 + call $~lib/rt/itcms/__visit + i32.const 11264 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 8432 + call $~lib/rt/itcms/__visit + i32.const 9488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -26076,76 +25019,43 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $5 - i32.const 1 + i32.const 1073741820 i32.gt_u if - local.get $5 - i32.const 1 - i32.shr_u - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load - local.set $4 - local.get $6 - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load - i64.store - local.get $6 - local.get $4 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end + i32.const 1056 + i32.const 1104 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + 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 ) - (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + local.get $0 + local.get $1 + f64.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + local.get $0 + local.get $1 + f32.add + ) + (func $std/typedarray/testInstantiate (param $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 48 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -26160,1039 +25070,593 @@ unreachable end 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 48 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 + local.get $1 + i32.load offset=8 + 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.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 34 + i32.const 3 + 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 $3 + local.get $0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $3 local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $3 local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + i32.load offset=8 + i32.ne + if i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + i32.const 1568 + i32.const 38 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.tee $1 - local.get $0 - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - select + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $1 i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store offset=8 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - 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 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int64Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Int64Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - 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 570 - 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 + call $~lib/typedarray/Int8Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 i32.const 1568 - i32.const 575 + i32.const 47 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.ne + i32.shl + i32.ne if i32.const 0 i32.const 1568 - i32.const 576 + i32.const 48 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.ne + i32.ne if i32.const 0 i32.const 1568 - i32.const 577 + i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 i32.const 1568 - i32.const 578 + i32.const 52 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 - ) - (func $~lib/typedarray/Uint64Array#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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 1 + i32.shl + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 53 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.const 3 - i32.shl - i32.add + local.get $1 i32.store offset=4 - local.get $3 local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + i32.const 1568 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.tee $1 - local.get $0 - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - select + i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 - i32.sub - i32.const 3 + i32.const 2 i32.shl - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 58 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - 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 - global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int64Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - 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 570 - 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 + call $~lib/typedarray/Int32Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=28 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 + i32.store offset=4 local.get $1 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.set $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + i32.load offset=8 local.get $0 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne + i32.const 2 + i32.shl + i32.ne if i32.const 0 i32.const 1568 - i32.const 575 + i32.const 63 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne + i32.ne if i32.const 0 i32.const 1568 - i32.const 576 + i32.const 64 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 i32.const 1568 - i32.const 577 + i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne + i32.shl + i32.ne if i32.const 0 i32.const 1568 - i32.const 578 + i32.const 68 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 - ) - (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (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 16320 - i32.lt_s + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.get $0 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 69 + i32.const 3 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.store local.get $0 - i32.load offset=4 - local.set $2 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=36 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $5 - i32.const 1 - i32.gt_u + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if - local.get $5 - i32.const 1 - i32.shr_u - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load - local.set $4 - local.get $6 - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load - f32.store - local.get $6 - local.get $4 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end + i32.const 0 + i32.const 1568 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 - ) - (func $~lib/typedarray/Float32Array#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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.const 3 + i32.shl + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 73 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=40 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.const 2 - i32.shl - i32.add + local.get $1 i32.store offset=4 - local.get $3 local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + i32.const 1568 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.tee $1 - local.get $0 - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - select + i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 - i32.sub i32.const 2 i32.shl - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" - (local $0 i32) - (local $1 i32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 78 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - 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 $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Float32Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Float32Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - 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 570 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - call $~lib/typedarray/Float32Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + call $~lib/typedarray/Int32Array#get:length local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne + i32.ne if i32.const 0 i32.const 1568 - i32.const 575 + i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 i32.const 1568 - i32.const 576 + i32.const 82 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne + i32.const 3 + i32.shl + i32.ne if i32.const 0 i32.const 1568 - i32.const 577 + i32.const 83 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length local.get $0 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne + i32.ne if i32.const 0 i32.const 1568 - i32.const 578 + i32.const 84 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 48 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) + (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 $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.eqz + ) + (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 $"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 $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + local.get $0 + local.get $0 + i64.mul + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -27212,77 +25676,59 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7152 i32.store local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $5 - i32.const 1 - i32.gt_u + i32.const 255 + i32.and + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne if - local.get $5 - i32.const 1 - i32.shr_u - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - local.set $4 - local.get $6 - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - f64.store - local.get $6 - local.get $4 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + 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 538 + i32.const 5 + call $~lib/builtins/abort + unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" - (local $0 i32) - (local $1 i32) - (local $2 f64) - (local $3 i32) - (local $4 i32) + (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 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -27298,200 +25744,58 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Float64Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Float64Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - 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 570 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - 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=4 + i32.const 7152 + i32.store + i32.const 7152 local.get $1 - call $~lib/typedarray/Float64Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + call $~lib/array/Array#__get + i64.extend_i32_s local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.ne + i64.ne if i32.const 0 i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 536 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.ne + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne if i32.const 0 i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 537 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne if i32.const 0 i32.const 1568 - i32.const 578 - i32.const 3 + i32.const 538 + 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 24 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -27506,752 +25810,1714 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" - drop - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 $2 - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#lastIndexOf (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 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.const 7152 + i32.store + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + local.get $0 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" - drop - 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 + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if i32.const 0 - i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 $2 - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 + i32.const 1568 + i32.const 537 + 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 - ) - (func $~lib/typedarray/Int8Array#lastIndexOf@varargs (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 16320 - i32.lt_s + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#lastIndexOf + 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/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" - (local $0 i32) - (local $1 i32) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 4 + i32.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/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 $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.gt_u + ) + (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 $~start + call $start:std/typedarray + ) + (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) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $7 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + 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$749 + 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 8000 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64$749 + end + local.get $3 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.wrap_i64 + 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 $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $3 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $3 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $3 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + 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 + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 20 + i32.add + local.get $7 + i32.mul + i32.const 20 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $6 + 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.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $5 + local.get $6 local.get $2 - local.get $0 - i32.const 7728 - local.get $0 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $0 i32.const 1 + i32.shl i32.add - local.set $0 - br $for-loop|0 + local.get $0 + local.get $7 + 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 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#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 - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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 - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $7 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 9664 + local.set $0 + block $~lib/util/number/dtoa_impl|inlined.1 + local.get $3 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.1 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + i32.const 9696 + local.set $0 + local.get $3 + local.get $3 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.1 + i32.const 9728 + i32.const 9776 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $~lib/util/number/dtoa_impl|inlined.1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9808 + local.get $3 + i32.const 0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 9808 + local.get $1 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 28 + i32.add + local.get $7 + i32.mul + i32.const 28 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $6 + 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.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $5 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + 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 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 617 - i32.const 3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $8 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $8 + i32.eqz + if + local.get $0 + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 9664 + local.set $0 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $5 + f64.promote_f32 + local.tee $3 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + i32.const 9696 + local.set $0 + local.get $3 + local.get $3 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 9728 + i32.const 9776 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + i32.const 9808 + local.get $3 + i32.const 1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 9808 + local.get $1 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 28 + i32.add + local.get $8 + i32.mul + i32.const 28 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $8 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $6 + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (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) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - 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 - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + i32.load8_u offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store8 + local.get $0 + i32.load8_u offset=2 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store8 offset=1 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + i32.load8_u offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store8 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store8 offset=1 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + 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 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 i32.const 4 - i32.const 9 - call $~lib/typedarray/Int8Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (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 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i64) + (local $17 i64) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 630 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + i64.load offset=16 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $16 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store offset=8 + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + i64.store offset=16 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + local.get $9 + local.get $16 + local.get $1 + select + i64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $11 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + 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 20 + i32.const 4 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) + (func $~lib/util/sort/SORT (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) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -28267,525 +27533,2156 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 + block $folding-inner0 local.get $1 - i32.lt_s + i32.const 48 + i32.le_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 - local.get $0 - i32.const 7728 - 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 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + 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 - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (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) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load16_u + local.set $1 + local.get $0 + i32.load16_u offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store16 + local.get $0 + i32.load16_u offset=4 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store16 offset=2 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_u + local.set $1 + local.get $0 + i32.load16_u offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store16 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store16 offset=2 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + 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 - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (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) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - 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 - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load8_s + local.set $1 + local.get $0 + i32.load8_s offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store8 + local.get $0 + i32.load8_s offset=2 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store8 offset=1 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_s + local.set $1 + local.get $0 + i32.load8_s offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store8 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store8 offset=1 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + 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 - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (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 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i64) + (local $17 i64) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 621 - 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 - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint8Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 626 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + i64.load offset=16 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $16 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store offset=8 + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + i64.store offset=16 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + local.get $9 + local.get $16 + local.get $1 + select + i64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $11 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + 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 - local.get $0 - i32.store offset=4 - 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 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (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) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 631 - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + 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 20 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/sort/SORT (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) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -28801,2756 +29698,3199 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 + block $folding-inner0 local.get $1 - i32.lt_s + i32.const 48 + i32.le_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 - local.get $0 - i32.const 7728 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load16_s + local.set $1 + local.get $0 + i32.load16_s offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store16 + local.get $0 + i32.load16_s offset=4 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store16 offset=2 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_s + local.set $1 + local.get $0 + i32.load16_s offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store16 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store16 offset=2 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + 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 - local.get $2 - i32.store offset=4 - local.get $2 - 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 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (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 f64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f64) + (local $18 f64) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#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 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f64.load + local.set $9 + local.get $0 + f64.load offset=8 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + f64.load offset=16 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 + local.get $2 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store offset=8 + local.get $0 + local.get $9 + local.get $18 + local.get $1 + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $9 + local.get $0 + f64.load offset=8 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + f64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + 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 $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $15 + local.get $11 + i32.add + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + 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 - local.get $2 - i32.store offset=4 - local.get $2 - 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 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (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 f32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f32) + (local $18 f32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - 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 - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 633 - 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/typedarray/Int16Array#indexOf (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + f32.load offset=8 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 + local.get $2 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store offset=4 + local.get $0 + local.get $9 + local.get $18 + local.get $1 + select + f32.store offset=8 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + f32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 - i32.add - local.tee $2 + i32.store + local.get $0 i32.const 0 - local.get $2 + local.get $1 + i32.const 1 + i32.sub i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 local.get $3 - i32.lt_s + local.get $4 + i32.lt_u if - local.get $2 - local.get $0 - local.get $2 - i32.const 1 + local.get $11 + local.get $3 + i32.const 2 i32.shl i32.add - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" - drop - local.get $2 + i32.const -1 + i32.store + local.get $3 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $3 + br $for-loop|1 end end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#lastIndexOf (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" (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 $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" - drop - local.get $2 - local.get $3 - i32.add - local.get $3 + i32.const 0 + local.get $1 i32.const 1 i32.sub + local.tee $10 local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + if + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store + local.get $0 i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store local.get $0 - local.get $2 + local.get $4 i32.const 1 - i32.shl i32.add - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" - drop + local.tee $6 + local.get $10 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $15 + local.get $11 + i32.add + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 end end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 i32.const 1 i32.sub - br_table $0of1 $1of1 $outOfRange + local.set $1 + br $for-loop|4 end - unreachable end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $2 + 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 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 - i32.store + local.get $1 + i64.gt_u + local.get $0 + local.get $1 + i64.lt_u + i32.sub + ) + (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 $~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 $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.extend8_s + local.get $1 + i32.extend8_s + i32.sub + ) + (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 $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 + i32.extend16_s local.get $1 + i32.extend16_s + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u local.get $2 - call $~lib/typedarray/Int16Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i64.xor + local.tee $2 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $3 + i64.xor + local.tee $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" - (local $0 i32) - (local $1 i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 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 16320 + (local $3 i32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 i32.lt_s + i32.sub + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz if - i32.const 49120 - i32.const 49168 - i32.const 1 + local.get $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + 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 + 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 $1 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 + 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 + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) local.get $0 - i32.const 7728 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add local.get $0 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + memory.copy local.get $0 + i32.const 46 + i32.store16 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 611 - i32.const 3 - call $~lib/builtins/abort - unreachable + else + local.get $3 + i32.const 0 + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + 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 + 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 + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + 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 + 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 + 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 $3 + select + i32.store16 + 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 + 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 + i32.const 4 + i32.add + local.tee $4 + 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 + 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 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end + end end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength + ) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i64) local.get $2 + local.get $1 + i64.sub + local.set $9 + i64.const 1 i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.sub + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + local.tee $11 local.get $2 - i32.store offset=4 + i64.and + local.set $8 local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i64.shr_u + i32.wrap_i64 + 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 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if + local.set $7 + loop $while-continue|0 + local.get $7 i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Int16Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - 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 $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 $3 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100 + i32.div_u + local.set $6 + local.get $3 + i32.const 100 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10 + i32.div_u + local.set $6 + local.get $3 + i32.const 10 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + local.set $6 + i32.const 0 + local.set $3 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $5 + local.get $6 + i32.or + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $6 + 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 $3 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $2 + i64.shl + local.get $8 + i64.add + local.tee $1 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 10736 + i32.add + i64.load32_u + local.get $2 + i64.shl + local.set $2 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $1 + local.get $9 + i64.lt_u + local.get $4 + local.get $1 + i64.sub + local.get $2 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $1 + local.get $2 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $1 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $2 + i64.add + local.set $1 + br $while-continue|3 + end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + return + end + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $8 + i64.const 10 + i64.mul + local.tee $1 + local.get $10 + i64.extend_i32_s + i64.shr_u + local.tee $2 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + 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 $1 + local.get $11 + i64.and + local.tee $8 + local.get $4 + i64.ge_u + br_if $while-continue|4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - 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 - local.get $0 - i32.store offset=4 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 10736 + i32.add + i64.load32_u + i64.mul + local.set $1 local.get $0 - i32.const 5 + local.get $5 i32.const 1 - call $~lib/typedarray/Int16Array#indexOf + i32.sub i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|6 + local.get $1 + local.get $8 + i64.gt_u + local.get $4 + local.get $8 + i64.sub + local.get $12 + i64.ge_u + i32.and + if (result i32) + local.get $1 + local.get $8 + local.get $12 + i64.add + local.tee $2 + i64.gt_u + local.get $1 + local.get $8 + i64.sub + local.get $2 + local.get $1 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $12 + i64.add + local.set $8 + br $while-continue|6 + end end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - 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 633 - 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 $7 + i32.store16 + local.get $5 ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 + (local $2 f32) + (local $3 f64) + (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 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store offset=4 + local.get $5 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 + local.get $5 + i32.store offset=4 + local.get $5 + 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 $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + 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 $7 i32.store offset=12 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $10 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $9 + i32.add + i32.const 255 + local.get $10 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.sub + i32.const 31 + i32.shr_s + local.get $4 + i32.or + local.get $4 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint16Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 633 - 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/typedarray/Int32Array#indexOf (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - 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 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 + i32.const 64 + i32.const 11728 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#lastIndexOf (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store offset=8 local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Int8Array#get:length + local.get $4 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int32Array#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 - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $8 + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $2 + local.get $2 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $2 + f32.const 255 + f32.min + f32.const 0 + f32.max + i32.trunc_sat_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 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11824 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11856 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $4 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|01 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $5 + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $3 + f64.const 255 + f64.min + f64.const 0 + f64.max + i32.trunc_sat_f64_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11888 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $4 + i32.const 7 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 7 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $6 + i32.const 0 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $5 + i32.add + i32.const 255 + local.get $1 + local.get $6 + i32.add + i32.load8_s + local.tee $7 + i32.sub + i32.const 31 + i32.shr_s + local.get $7 + i32.or + local.get $7 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11920 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int32Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int32Array#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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 633 - 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/typedarray/Uint32Array#indexOf (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 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + 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 $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + 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 $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11520 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $6 + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_u + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#lastIndexOf (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + 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 $0 + i32.store offset=4 + i32.const 10 i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load + i32.const 64 + i32.const 11600 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11632 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 local.get $1 - i32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $6 + i32.lt_s + if + local.get $1 + local.get $7 + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_u + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11664 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11696 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#lastIndexOf@varargs (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 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -31558,755 +32898,884 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#lastIndexOf - 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 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 f64) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 - local.get $0 - i32.const 7728 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + 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 $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + 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 $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 13872 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $7 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $7 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + i64.trunc_sat_f32_u + i64.const 0 + local.get $4 + local.get $4 + f32.sub + f32.const 0 + f32.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14032 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14144 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + local.tee $9 + i32.add + f64.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i64.trunc_sat_f64_u + i64.const 0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14256 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14368 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint32Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 633 - 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/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + 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 $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + 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 $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $1 - i64.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" - drop - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store offset=4 + local.get $2 + 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=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + i32.const 11008 i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 12896 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $10 + loop $for-loop|0 local.get $1 - i64.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $6 + i32.lt_s + if + local.get $10 + local.get $1 + i32.const 2 + i32.shl + local.tee $7 + i32.add + f32.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i32.trunc_sat_f32_u + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13008 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $0 + local.get $8 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13072 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + 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 $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_u + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13136 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13200 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (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 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -32314,756 +33783,877 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#lastIndexOf - 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 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + 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 $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + 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 $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 $0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 local.get $0 - i32.const 7728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + i32.const 10 i32.const 1 + i32.const 66 + i32.const 12240 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $8 + i32.const 3 i32.add - local.set $0 - br $for-loop|0 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_u + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12336 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12384 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_u + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + 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=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12480 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const -1 - 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 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 608 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 11 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const -1 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Int64Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - 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 - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - 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/typedarray/Uint64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + 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 $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + 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 $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11312 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 local.get $1 - i64.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $6 + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_s + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + 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 $0 + i32.store offset=4 + i32.const 10 i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load + i32.const 16 + i32.const 11392 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11424 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 local.get $1 - i64.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $6 + i32.lt_s + if + local.get $1 + local.get $7 + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_s + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11456 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11488 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (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 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -33071,756 +34661,884 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array#lastIndexOf - 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 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 f64) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 + local.get $6 + i32.store offset=4 + local.get $6 + 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 $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + 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 $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13264 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $7 + i32.const 3 i32.add - local.set $0 - br $for-loop|0 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $7 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + i64.trunc_sat_f32_s + i64.const 0 + local.get $4 + local.get $4 + f32.sub + f32.const 0 + f32.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13424 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13536 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + local.tee $9 + i32.add + f64.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i64.trunc_sat_f64_s + i64.const 0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13648 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13760 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 11 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const -1 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 3 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint64Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Uint64Array#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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 633 - 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/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + 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 $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + 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 $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12528 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $10 + loop $for-loop|0 local.get $1 - f32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + local.get $6 + i32.lt_s + if + local.get $10 + local.get $1 + i32.const 2 + i32.shl + local.tee $7 + i32.add + f32.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i32.trunc_sat_f32_s + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12640 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $0 + local.get $8 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12704 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 local.get $1 - f32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_s + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12768 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12832 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (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 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -33828,1979 +35546,1764 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#lastIndexOf - 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 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + 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 $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + 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 $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + i32.const 10 i32.const 1 + i32.const 65 + i32.const 11952 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $8 + i32.const 3 i32.add - local.set $0 - br $for-loop|0 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_s + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12048 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12096 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_s + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12144 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12192 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 0 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const -1 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (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 - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 1 - i32.const 10 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 1 - i32.const -100 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f32.const 11 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f32.const -1 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 1 - i32.const -10 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Float32Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 4 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 5 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 5 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - 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/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $1 - f64.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" - drop - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + 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=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + 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 $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $5 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $7 + loop $for-loop|0 local.get $1 - f64.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 14784 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $5 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $7 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 14944 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int64Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store offset=8 local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set + call $~lib/typedarray/Int64Array#get:length + local.get $5 + i32.const 6 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 48 i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 0 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const -1 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 1 - i32.const 10 - call $~lib/typedarray/Float64Array#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 - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 1 - i32.const -100 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f64.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f64.const 11 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $1 + loop $for-loop|01 + local.get $1 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 3 + i32.shl + local.tee $7 + i32.add + local.get $2 + local.get $7 + i32.add + i64.load + f64.convert_i64_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 15056 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + f64.convert_i32_u + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + 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 $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 32 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|03 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $4 + 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 12 + 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 11264 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 7 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 56 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|04 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $3 + 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 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 15168 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f64.const -1 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f64.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 1 - i32.const -10 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 1 - i32.const -11 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Float64Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 4 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 5 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 9 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 10 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - 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 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 5 - i32.const 1 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 5 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - 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/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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.le_s - select - i32.const 1 - i32.shl - local.set $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.ge_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - i32.sub - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return - end - local.get $3 - i32.eqz - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.eq - i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $3 - i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (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) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9584 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1408 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 - end + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add local.get $6 - i32.mul - i32.const 11 - i32.add - local.tee $2 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - i32.shl + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 2 - call $~lib/rt/itcms/__new - local.tee $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=8 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + 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 $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + 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 $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $4 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $8 + loop $for-loop|0 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 + local.get $7 local.get $1 - i32.const 1 + i32.const 2 i32.shl + local.tee $5 i32.add - local.get $3 local.get $5 + local.get $8 i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + i32.load + f32.convert_i32_s + f32.store 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 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end - local.get $2 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14480 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + local.get $0 + i32.const 11088 + i32.const 3 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14592 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $4 + i32.const 6 i32.add - local.tee $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 - end + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 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 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $1 + loop $for-loop|00 local.get $1 - i64.load - i64.eq + local.get $4 + i32.lt_s if - local.get $2 - i32.const 8 + local.get $5 + local.get $1 + i32.const 2 + i32.shl i32.add - local.set $2 + local.get $6 local.get $1 - i32.const 8 + 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 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 + br $for-loop|00 end end - end - block $__inlined_func$~lib/util/string/compareImpl$714 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14656 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $4 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $1 + loop $for-loop|01 + local.get $1 + local.get $4 + i32.lt_s if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$714 - local.get $2 + local.get $1 i32.const 2 + i32.shl i32.add - local.set $2 local.get $1 - i32.const 2 + local.get $2 i32.add - local.set $1 - br $while-continue|1 - end + i32.load8_u + f32.convert_i32_u + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + end end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (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) - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9584 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1409 + 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 $0 - i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.tee $6 - i32.const 0 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 - end + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 9584 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 4 i32.add - local.get $6 - i32.mul - i32.const 10 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $4 local.get $1 - i32.const 1 + i32.const 2 i32.shl i32.add local.get $3 - local.get $5 + local.get $1 + i32.const 1 + i32.shl i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered + i32.load16_s + f32.convert_i32_s + f32.store local.get $1 + i32.const 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 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end + br $for-loop|02 + 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 $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 7 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 28 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|03 + local.get $1 + local.get $2 + i32.lt_s + if local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_s + f32.convert_i32_s + f32.store + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $1 + br $for-loop|03 end end - local.get $2 + 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 $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14720 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered + i32.store offset=20 + local.get $0 local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 - end + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 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 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -35808,28 +37311,22 @@ 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.store - local.get $0 - call $~lib/typedarray/Uint8Array#join - 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 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) + (func $"std/typedarray/testArrayWrap<~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) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -35838,25 +37335,104 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 i32.store offset=4 - local.get $0 - i32.load offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 10928 + 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 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.set $5 global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 local.get $0 - i32.store offset=4 + local.get $4 + local.get $5 + local.get $2 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -35866,142 +37442,89 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1410 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load16_s - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - local.get $6 - i32.mul - i32.const 11 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $3 - 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 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - 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 $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 + 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 + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 + call $~lib/typedarray/Uint8ClampedArray#__get + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + local.set $0 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 49120 @@ -36011,15 +37534,16 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -36028,25 +37552,103 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 i32.store offset=4 - local.get $0 - i32.load offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.set $5 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 local.get $0 - i32.store offset=4 + local.get $5 + local.get $6 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -36056,142 +37658,99 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1411 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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.tee $5 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + 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 $6 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store + local.get $6 + local.get $0 + call $~lib/rt/itcms/__link + local.get $6 + local.get $5 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=4 + 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 + local.get $6 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load16_u - call $~lib/util/number/utoa32 - local.set $0 + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - local.get $6 - i32.mul - i32.const 10 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 local.get $6 - i32.lt_s + i32.store offset=4 + local.get $6 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + local.get $3 + i64.ne if - local.get $0 - local.get $1 - 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 $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 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - local.get $0 - local.get $1 - 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 $1 - i32.add - local.tee $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + local.set $0 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 49120 @@ -36201,15 +37760,15 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int32Array#join (param $0 i32) (result i32) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -36218,191 +37777,104 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $0 + i32.const 0 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 10928 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 16320 - i32.lt_s - br_if $folding-inner0 + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1412 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 + local.get $2 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - local.get $6 - i32.mul - i32.const 11 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $3 - 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 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - 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 $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - 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 $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 local.get $0 - i32.store + i32.const 10928 local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store offset=12 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $1 + i32.load offset=8 i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + i32.store + 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 16320 i32.lt_s @@ -36411,167 +37883,98 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 + local.get $0 i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub + i32.const 12 + i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1413 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load - call $~lib/util/number/utoa32 - local.set $0 + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - local.get $6 - i32.mul - i32.const 10 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Uint32Array#__get local.get $3 - local.get $6 - i32.lt_s + i32.ne if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $3 - 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 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - 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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + local.set $0 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 49120 @@ -36581,370 +37984,223 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16>" + (local $0 i32) (local $1 i32) - (local $2 i64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 16320 i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $0 + i32.const 0 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 10928 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 16320 - i32.lt_s - br_if $folding-inner1 + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$5 + local.get $2 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + 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 - global.set $~lib/memory/__stack_pointer - i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$5 + br $for-loop|0 end - block $folding-inner0 - local.get $6 - i32.eqz - if - block $__inlined_func$~lib/util/number/itoa64 (result i32) - local.get $5 - i64.load - i64.extend32_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 16320 - 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 8000 - 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 - i32.const 1 - i32.shl - local.tee $0 - 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 - 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 $4 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $0 - local.get $1 - i32.add - local.get $3 - local.get $4 - 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 $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $0 - local.get $1 - i32.add - local.get $2 - local.get $3 - call $~lib/util/number/utoa64_dec_lut - end - local.get $0 - if - local.get $1 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - end - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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.tee $4 + i32.const 1 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + 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 $5 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 + 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 + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $7 - i32.const 21 - i32.add - local.get $6 - i32.mul - i32.const 21 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 + local.get $1 i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - 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 $1 - i32.add - local.set $1 - local.get $7 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $7 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $7 - 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 1 - i32.shl - i32.add + local.get $0 + call $~lib/typedarray/Uint16Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $5 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - local.get $4 - i32.lt_s + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + local.get $3 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$5 + local.set $0 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 49120 @@ -36954,877 +38210,548 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 local.get $1 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return + local.set $0 + br $for-loop|0 end - local.get $7 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - 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$749 - 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 8000 - local.set $1 - br $__inlined_func$~lib/util/number/utoa64$749 - end - local.get $3 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.wrap_i64 - 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 $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $3 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $3 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $3 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $3 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $3 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $3 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $3 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $0 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - 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 - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 20 - i32.add - local.get $7 - i32.mul - i32.const 20 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 - i32.lt_s - if - local.get $6 - 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.set $2 - local.get $1 - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $5 - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $2 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 + 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 + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - local.get $7 - 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 + local.get $1 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 + local.get $2 + i32.store offset=4 + local.get $2 local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner1 + call $~lib/typedarray/Int8Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Int8Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 24 + 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 $1 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" + (local $0 i32) (local $1 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - call $~lib/util/string/joinIntegerArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 f64) + (local $3 i64) (local $4 i32) - (local $5 f32) + (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.const 1 - i32.sub - local.tee $8 - i32.const 0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + 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 - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return + local.set $0 + br $for-loop|0 end - local.get $8 - i32.eqz - if - local.get $0 - f32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 9664 - local.set $0 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $5 - f64.promote_f32 - local.tee $3 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - i32.const 9696 - local.set $0 - local.get $3 - local.get $3 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 9728 - i32.const 9776 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 9808 - local.get $3 - i32.const 1 - 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 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 9808 - local.get $1 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 28 - i32.add - local.get $8 - i32.mul - i32.const 28 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $8 - i32.lt_s - if - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $1 - if - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $6 - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $5 + local.get $6 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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.tee $5 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + 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 $6 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store + local.get $6 + local.get $0 + call $~lib/rt/itcms/__link + local.get $6 + local.get $5 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=4 + 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 + local.get $6 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - call $~lib/util/number/dtoa_buffered local.get $2 - i32.add - local.tee $0 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/string/String#substring + call $~lib/typedarray/Int64Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + call $~lib/typedarray/Int64Array#__get + local.get $3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add local.set $0 - br $folding-inner1 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 24 + 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 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" + (local $0 i32) (local $1 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - call $~lib/util/string/joinFloatArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 f64) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return - end - local.get $7 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 9664 - local.set $0 - block $~lib/util/number/dtoa_impl|inlined.1 - local.get $3 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.1 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - i32.const 9696 - local.set $0 - local.get $3 - local.get $3 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 9728 - i32.const 9776 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $~lib/util/number/dtoa_impl|inlined.1 - end - i32.const 9808 - local.get $3 - i32.const 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 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 9808 - local.get $1 - memory.copy - end + local.get $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 28 - i32.add - local.get $7 - i32.mul - i32.const 28 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 - i32.lt_s - if - local.get $6 - 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.set $2 - local.get $1 - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $5 - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - 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 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - 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 - local.get $0 - ) - (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) - (local $1 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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - call $~lib/util/string/joinFloatArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16320 i32.lt_s @@ -37832,23 +38759,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - 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 - end global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -37876,71 +38786,34 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $3 - local.get $1 - i32.lt_u + local.tee $4 + i32.const 3 + i32.and if - i32.const 1360 + i32.const 1056 i32.const 1632 - i32.const 1860 - i32.const 5 + i32.const 1865 + i32.const 9 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 1869 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.set $2 - else - local.get $1 - local.get $2 - i32.add - local.get $3 - i32.gt_s - if - i32.const 1056 - i32.const 1632 - i32.const 1874 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 5 + i32.const 9 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store offset=8 - local.get $3 + local.get $5 local.get $0 i32.store - local.get $3 + local.get $5 local.get $0 call $~lib/rt/itcms/__link - local.get $3 - local.get $2 + local.get $5 + local.get $4 i32.store offset=8 - local.get $3 + local.get $5 local.get $0 - local.get $1 - i32.add i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -37950,7 +38823,49 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int32Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Int32Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer return end i32.const 49120 @@ -37960,104 +38875,7 @@ call $~lib/builtins/abort unreachable ) - (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - 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 $2 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $0 - local.get $1 - i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" (local $0 i32) (local $1 i32) (local $2 i32) @@ -38085,30 +38903,30 @@ i32.store offset=4 i32.const 10928 call $~lib/array/Array#get:length - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 + local.get $2 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 i32.store offset=8 loop $for-loop|0 local.get $0 - local.get $1 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 10928 i32.store offset=12 - local.get $2 + local.get $1 local.get $0 i32.const 10928 local.get $0 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + i32.extend16_s + call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 i32.add @@ -38117,33 +38935,33 @@ end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.set $4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 - local.get $2 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.set $5 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 local.get $0 local.get $4 local.get $5 - local.get $2 + local.get $1 i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice @@ -38193,10 +39011,20 @@ i32.const 20 i32.sub i32.load offset=16 - local.set $4 + local.tee $4 + i32.const 1 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 4 + i32.const 7 call $~lib/rt/itcms/__new local.tee $5 i32.store offset=8 @@ -38226,22 +39054,22 @@ local.set $0 loop $for-loop|1 local.get $0 - local.get $1 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 local.get $0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Int16Array#__get local.set $3 global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 local.get $5 local.get $0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Int16Array#__get local.get $3 i32.ne if @@ -38272,13 +39100,14 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -38300,31 +39129,30 @@ i32.store offset=4 i32.const 10928 call $~lib/array/Array#get:length - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 + local.get $2 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 i32.store offset=8 loop $for-loop|0 local.get $0 - local.get $1 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 10928 i32.store offset=12 - local.get $2 + local.get $1 local.get $0 i32.const 10928 local.get $0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set local.get $0 i32.const 1 i32.add @@ -38333,33 +39161,33 @@ end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 - local.get $2 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 local.get $0 - local.get $4 local.get $5 - local.get $2 + local.get $6 + local.get $1 i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice @@ -38409,223 +39237,8 @@ i32.const 20 i32.sub i32.load offset=16 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new local.tee $5 - i32.store offset=8 - local.get $5 - local.get $0 - i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $0 - i32.store offset=4 - 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 - local.get $5 - i32.store offset=20 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 730 - 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 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=4 - i32.const 10928 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=12 - local.get $1 - local.get $0 - i32.const 10928 - local.get $0 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - local.get $5 - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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.tee $4 - i32.const 1 + i32.const 7 i32.and if i32.const 1056 @@ -38637,20 +39250,20 @@ end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 7 + i32.const 14 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store - local.get $5 + local.get $6 local.get $0 call $~lib/rt/itcms/__link + local.get $6 local.get $5 - local.get $4 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -38661,7 +39274,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=20 i32.const 0 local.set $0 @@ -38675,16 +39288,16 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Float64Array#__get local.set $3 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $0 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Float64Array#__get local.get $3 - i32.ne + f64.ne if i32.const 0 i32.const 1568 @@ -38713,13 +39326,14 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -38744,7 +39358,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/typedarray/Uint16Array#constructor + call $~lib/typedarray/Float32Array#constructor local.tee $1 i32.store offset=8 loop $for-loop|0 @@ -38763,9 +39377,8 @@ i32.const 10928 local.get $0 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set local.get $0 i32.const 1 i32.add @@ -38787,19 +39400,19 @@ global.get $~lib/memory/__stack_pointer local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 local.get $0 - local.get $4 local.get $5 + local.get $6 local.get $1 i32.load offset=8 i32.add @@ -38850,8 +39463,8 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $4 - i32.const 1 + local.tee $5 + i32.const 3 i32.and if i32.const 1056 @@ -38863,20 +39476,20 @@ end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 8 + i32.const 13 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store - local.get $5 + local.get $6 local.get $0 call $~lib/rt/itcms/__link + local.get $6 local.get $5 - local.get $4 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -38887,7 +39500,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=20 i32.const 0 local.set $0 @@ -38901,16 +39514,16 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Float32Array#__get local.set $3 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $0 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Float32Array#__get local.get $3 - i32.ne + f32.ne if i32.const 0 i32.const 1568 @@ -38939,1595 +39552,1406 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.lt_u + local.get $0 + local.get $1 + i64.gt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.lt_u + local.get $0 + local.get $1 + i32.gt_u + i32.sub + ) + (func $"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 $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.extend8_s + local.tee $1 + local.get $0 + i32.extend8_s + local.tee $0 + i32.gt_s + local.get $0 + local.get $1 + i32.gt_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 $"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 $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.extend16_s + local.tee $1 + local.get $0 + i32.extend16_s + local.tee $0 + i32.gt_s + local.get $0 + local.get $1 + i32.gt_s + 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 $"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/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.eqz + ) + (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 $"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 + f32.eq + ) + (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) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=4 - i32.const 10928 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store offset=8 - loop $for-loop|0 + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=12 - local.get $1 - local.get $0 - i32.const 10928 - 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 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 local.get $4 - local.get $5 - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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.tee $4 - i32.const 3 - i32.and if - i32.const 1056 - i32.const 1632 - i32.const 1865 - 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 $5 - i32.store offset=8 - local.get $5 - local.get $0 - i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $0 - i32.store offset=4 - 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 - local.get $5 - i32.store offset=20 - i32.const 0 - local.set $0 - loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $0 - local.get $2 - i32.lt_s + call $~lib/typedarray/Uint8ClampedArray#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + 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 - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/typedarray/Int32Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - local.get $0 - call $~lib/typedarray/Int32Array#__get - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 730 - 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 570 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + 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 ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" (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 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=4 - i32.const 10928 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=12 - local.get $1 - local.get $0 - i32.const 10928 - 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.store offset=12 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - local.get $5 - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 - i32.store offset=16 - global.get $~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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 local.get $0 - i32.store - 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 16320 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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.tee $4 - i32.const 3 - i32.and if - i32.const 1056 - i32.const 1632 - i32.const 1865 - i32.const 9 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=8 - local.get $5 - local.get $0 - i32.store - local.get $5 + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - call $~lib/rt/itcms/__link - local.get $5 local.get $4 - i32.store offset=8 - local.get $5 - local.get $0 - i32.store offset=4 - 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 - local.get $5 - i32.store offset=20 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Uint8Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + 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 - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 730 - 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 570 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + 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 ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" (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) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=4 - i32.const 10928 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=12 - local.get $1 - local.get $0 - i32.const 10928 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $5 - local.get $6 - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 - i32.store offset=16 - global.get $~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 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 local.get $0 - i32.store - 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 16320 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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.tee $5 - i32.const 7 - i32.and if - i32.const 1056 - i32.const 1632 - i32.const 1865 - i32.const 9 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 - i32.store offset=8 - local.get $6 + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int64Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - i32.store offset=4 - 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 - local.get $6 - i32.store offset=20 - i32.const 0 - local.set $0 - loop $for-loop|1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $0 - local.get $2 - i32.lt_s + call $~lib/typedarray/Uint64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/typedarray/Int64Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - call $~lib/typedarray/Int64Array#__get - local.get $3 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 730 - 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 570 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint64Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.ne + if i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=4 - i32.const 10928 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=12 - local.get $1 - local.get $0 - i32.const 10928 - 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $5 - local.get $6 - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.ne + if i32.const 0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.ne + if i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + 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 + ) + (func $"std/typedarray/testArrayReverse<~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 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $5 - i32.const 7 - i32.and + local.get $4 + i32.lt_s if - i32.const 1056 - i32.const 1632 - i32.const 1865 - i32.const 9 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 - i32.store offset=8 - local.get $6 + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int32Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - i32.store offset=4 - 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 - local.get $6 - i32.store offset=20 - i32.const 0 - local.set $0 - loop $for-loop|1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get local.get $2 - i32.lt_s + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - local.get $3 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 730 - 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 570 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint32Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Uint32Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + 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 ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=4 - i32.const 10928 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.store offset=8 - loop $for-loop|0 + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=12 - local.get $1 - local.get $0 - i32.const 10928 - 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 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + 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 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $5 - local.get $6 - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - i32.store - 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 16320 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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.tee $5 - i32.const 3 - i32.and if - i32.const 1056 - i32.const 1632 - i32.const 1865 - 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 $6 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=4 - 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 - local.get $6 - i32.store offset=20 - i32.const 0 - local.set $0 - loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $0 - local.get $2 - i32.lt_s + call $~lib/typedarray/Uint16Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/typedarray/Float32Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - call $~lib/typedarray/Float32Array#__get - local.get $3 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 730 - 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 570 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Uint16Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 578 + 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 ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f64) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=4 - i32.const 10928 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store offset=8 - loop $for-loop|0 + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 10928 - i32.store offset=12 - local.get $1 - local.get $0 - i32.const 10928 - 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 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - 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 $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $5 - local.get $6 - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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.tee $5 - i32.const 7 - i32.and if - i32.const 1056 - i32.const 1632 - i32.const 1865 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=4 - 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 - local.get $6 - i32.store offset=20 - i32.const 0 - local.set $0 - loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $0 - local.get $2 - i32.lt_s + call $~lib/typedarray/Int8Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.extend8_s + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/typedarray/Float64Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - call $~lib/typedarray/Float64Array#__get - local.get $3 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 730 - 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 570 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 8 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11008 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $1 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $1 - i32.lt_s + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $2 - i32.add - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) - (local $2 i32) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (local $1 i32) + (local $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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - local.set $4 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_s - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.ne - if - i32.const 11344 - 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 764 - 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 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -40542,71 +40966,59 @@ unreachable end 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 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 7616 i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 - i32.const 6 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 + local.get $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=12 loop $for-loop|0 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 local.get $1 local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store8 + i32.const 7616 + 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 @@ -40615,82 +41027,143 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int64Array#reverse + drop i32.const 0 - i32.store offset=8 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Int64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + 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 570 + 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 - i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Int64Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=8 + i32.store offset=4 local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.set $2 + call $~lib/typedarray/Int64Array#reverse + local.tee $0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 - i32.lt_s + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=4 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.get $2 - memory.copy + local.get $0 + i32.store offset=4 + 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 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.store offset=4 + 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 578 + 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 ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayReverse<~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.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -40705,630 +41178,416 @@ unreachable end 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 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 7616 i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 - i32.const 4 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $4 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int32Array#reverse + drop i32.const 0 local.set $0 - loop $for-loop|0 + loop $for-loop|1 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 - i32.add - local.get $1 local.get $0 + call $~lib/typedarray/Int32Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store8 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|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 $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 8 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get i32.const 7 - i32.add - i32.lt_s + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 7 - i32.add + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.get $1 - memory.copy + local.get $0 + i32.store offset=4 + 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 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill + local.get $3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.store offset=4 - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $0 i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $3 i32.store offset=4 - local.get $7 - 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 $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - 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 $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11312 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 + local.get $3 local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + call $~lib/typedarray/Int16Array#__get global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 7616 + local.get $4 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $8 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $1 - local.get $6 - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - i32.trunc_sat_f32_s - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11392 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11424 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $7 - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_s - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end + call $~lib/array/Array#__get + i32.extend16_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + 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 - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11456 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11488 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|1 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 575 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint8Array#__uget (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 16320 - i32.lt_s + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 7 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $0 + i32.store offset=4 + 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 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.add - i32.load8_u + i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 f64) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -41344,3288 +41603,2798 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 + i32.const 7616 + i32.store offset=4 + i32.const 7616 call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=12 loop $for-loop|0 - local.get $2 - local.get $3 + local.get $0 + local.get $4 i32.lt_s if global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - i32.store + i32.const 7616 local.get $0 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.set $4 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer local.get $1 - i32.store + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 local.get $1 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.tee $5 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Float64Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Float64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 local.get $4 - i32.ne + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + f64.convert_i32_s + f64.ne if - i32.const 11552 - 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 764 - i32.const 7 + i32.const 570 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 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=4 + local.get $1 + call $~lib/typedarray/Float64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 578 + 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 ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $2 f32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - 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 $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - 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 $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=4 - local.get $2 - 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 $0 + i32.const 7616 i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11520 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer + local.get $3 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - 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 7616 local.get $0 - i32.store + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 11088 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 7616 + i32.store offset=16 + local.get $1 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $8 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store offset=8 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set local.get $0 - i32.load offset=4 - i32.const 3 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $1 - local.get $6 - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - i32.trunc_sat_f32_u - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Float32Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11600 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + local.get $3 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + call $~lib/typedarray/Float32Array#__get global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub local.get $0 - local.get $7 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer + i32.sub + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11632 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $7 - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_u - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11664 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11696 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|1 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - 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 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float32Array#reverse + local.tee $0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.ne if i32.const 0 i32.const 1568 - i32.const 758 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.tee $5 - local.get $4 - i32.ne - if - i32.const 11760 - 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 764 - 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 $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - (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 16320 - i32.lt_s + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $3 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 - local.get $3 - i32.add - i32.lt_s - end + local.get $0 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $2 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.tee $4 - i32.wrap_i64 - local.tee $5 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i64.extend_i32_s - i32.const 255 - local.get $5 - i32.sub - i32.const 31 - i32.shr_s - i64.extend_i32_s - local.get $4 - i64.or - i64.and - i64.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + i32.const 3 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (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.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - else + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 - local.get $3 - i32.add + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~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 3664 + i32.store offset=8 + 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 16320 i32.lt_s - end - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $0 - loop $for-loop|0 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.lt_s - if - local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3664 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 local.get $2 - i32.add - i32.const 255 local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.tee $1 - i32.sub - i32.const 31 - i32.shr_s - local.get $1 - i32.or - local.get $1 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.lt_s + if + local.get $2 + local.get $6 + i32.add + i32.load8_u + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $7 + local.get $2 + local.get $0 + i32.const 3664 + i32.load + call_indirect (type $1) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $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 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__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 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>" (local $0 i32) (local $1 i32) - (local $2 f32) - (local $3 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) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~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 3632 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 + local.get $2 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + if + local.get $2 + local.get $6 + i32.add + i32.load8_u + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $7 + local.get $2 + local.get $0 + i32.const 3632 + i32.load + call_indirect (type $1) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $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 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + if i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 388 i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - 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 $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne + if i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 389 i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 + i32.ne + if i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $8 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $10 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $1 - local.get $9 - i32.add - i32.const 255 - local.get $10 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.sub - i32.const 31 - i32.shr_s - local.get $4 - i32.or - local.get $4 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11728 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $4 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 + i32.const 1568 + i32.const 390 i32.const 3 - i32.add - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $8 - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $2 - local.get $2 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $2 - f32.const 255 - f32.min - f32.const 0 - f32.max - i32.trunc_sat_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 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11824 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11856 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $4 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|01 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $5 - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $3 - f64.const 255 - f64.min - f64.const 0 - f64.max - i32.trunc_sat_f64_u - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|01 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11888 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $4 - i32.const 7 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 7 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $6 - i32.const 0 - local.set $1 - loop $for-loop|02 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $5 - i32.add - i32.const 255 - local.get $1 - local.get $6 - i32.add - i32.load8_s - local.tee $7 - i32.sub - i32.const 31 - i32.shr_s - local.get $7 - i32.or - local.get $7 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|02 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11920 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return + call $~lib/builtins/abort + unreachable end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (func $"std/typedarray/testArrayMap<~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 i32) + (local $8 i32) + (local $9 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $1 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~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 3856 + i32.store offset=8 + 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 16320 i32.lt_s - if - local.get $2 - local.get $0 - i32.const 1 - i32.shl - i32.add + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3856 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 3 + i32.shl + local.tee $8 + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3856 + i32.load + call_indirect (type $27) + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#__uget (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + 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 $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.add - i32.load16_s - 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 $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayMap<~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) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 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.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 + call $~lib/typedarray/Uint32Array#__set + global.get $~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 3792 + i32.store offset=8 + 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 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.tee $5 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 local.get $4 - i32.ne + i32.lt_s if - i32.const 12000 + local.get $6 + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 i32.const 3 + global.set $~argumentsLength 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 764 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3792 + i32.load + call_indirect (type $1) + i32.store + 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 - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $2 - i32.const 6 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 + local.get $1 local.get $2 - i32.lt_s + 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 $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne if - local.get $3 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $0 + i32.const 0 + i32.const 1568 + i32.const 388 i32.const 3 - i32.shl - i32.add - i64.load - i64.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayMap<~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) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $2 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~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 3728 + i32.store offset=8 + 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 16320 i32.lt_s - if + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 local.get $3 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.add - i32.load8_u - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 1 + i32.shl + local.tee $8 + i32.add + i32.load16_u + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3728 + i32.load + call_indirect (type $1) + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + 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 $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $2 - i32.const 4 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.get $2 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (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.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $1 - i32.const 7 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 14 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~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 3600 + i32.store offset=8 + 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 16320 i32.lt_s - if + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 local.get $2 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.add - i32.load8_s - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $6 + i32.add + i32.load8_s + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $7 + local.get $2 + local.get $0 + i32.const 3600 + i32.load + call_indirect (type $1) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $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 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 f64) + (local $3 i32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~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 3824 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3824 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + if + local.get $6 + local.get $3 + i32.const 3 + i32.shl + local.tee $8 + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3824 + i32.load + call_indirect (type $27) + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + 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 $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + if i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 388 i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + if i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - 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 $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.ne + if i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 + i32.const 1568 + i32.const 390 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 $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 11952 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $8 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - i32.trunc_sat_f32_s - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12048 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12096 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_s - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12144 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12192 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return + call $~lib/builtins/abort + unreachable end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Uint16Array#__uget (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.tee $5 - local.get $4 - i32.ne - if - i32.const 12288 - 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 764 - 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/testArrayMap<~lib/typedarray/Int32Array,i32>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 f64) + (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 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - 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 $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~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 3760 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3760 + i32.load + call_indirect (type $1) + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + 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 $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 388 i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + if i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 66 - i32.const 12240 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.ne + if i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $8 + i32.const 1568 + i32.const 390 i32.const 3 - i32.add + 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 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayMap<~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) + (local $8 i32) + (local $9 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 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~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 3696 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3696 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 + if + local.get $6 + local.get $3 + i32.const 1 + i32.shl + local.tee $8 + i32.add + i32.load16_s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 local.get $8 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - i32.trunc_sat_f32_u - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 66 - i32.const 12336 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 66 - i32.const 12384 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_u - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3696 + i32.load + call_indirect (type $1) + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - 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=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 66 - i32.const 12480 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + 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 $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/array/Array#get:length - local.set $3 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - else + 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 + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $2 - local.get $3 + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__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 16 i32.add - i32.lt_s - end - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int32Array#__uget (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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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 + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result f64) local.get $0 - i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + f64.mul ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayMap<~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) + (local $9 f64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~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 3920 + i32.store offset=8 + 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 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#__uget - local.tee $5 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3920 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 local.get $4 - i32.ne + i32.lt_s if - i32.const 12592 + local.get $6 + local.get $3 + i32.const 3 + i32.shl + local.tee $8 + i32.add + f64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 i32.const 3 + global.set $~argumentsLength 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 764 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3920 + i32.load + call_indirect (type $32) + f64.store + 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 + 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 $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + local.get $0 + local.get $0 + f32.mul + ) + (func $"std/typedarray/testArrayMap<~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 i32) + (local $8 i32) + (local $9 f32) global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add + i32.const 16 + i32.sub global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~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 3888 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3888 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + f32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3888 + i32.load + call_indirect (type $33) + f32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + 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 $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -44640,73 +44409,42 @@ unreachable end 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 20 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7728 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 7728 i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $2 - i32.const 6 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 loop $for-loop|0 local.get $0 - local.get $2 + local.get $1 i32.lt_s if - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $1 + i32.const 7728 local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store32 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 i32.const 1 i32.add @@ -44715,206 +44453,482 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.set $2 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length local.get $2 - i32.lt_s + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint8Array#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 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.add - i32.load8_u - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + 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#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 3 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $2 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.tee $0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $2 i32.const 4 - i32.add - i32.lt_s + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $3 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - 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 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint8Array#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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + 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/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8>" + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -44929,71 +44943,42 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 7728 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 + i32.const 7728 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length local.get $1 - i32.const 7 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 28 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11264 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 i32.store offset=8 - i32.const 11268 - i32.load - local.set $3 - i32.const 0 - local.set $0 loop $for-loop|0 local.get $0 local.get $1 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 local.get $2 local.get $0 - i32.const 2 - i32.shl - i32.add + i32.const 7728 local.get $0 - local.get $3 - i32.add - i32.load8_s - i32.store + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set local.get $0 i32.const 1 i32.add @@ -45002,457 +44987,482 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint8Array#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 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint8Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint8Array#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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + 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/testTypedArraySet<~lib/typedarray/Int32Array> + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 f64) - (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 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - 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 $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - 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 $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12528 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $6 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $10 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $10 - local.get $1 - i32.const 2 - i32.shl - local.tee $7 - i32.add - f32.load - local.set $3 - local.get $7 - local.get $9 - i32.add - local.get $3 - i32.trunc_sat_f32_s - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12640 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=20 - local.get $0 - local.get $8 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12704 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - 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 $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_s - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12768 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12832 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint32Array#__uget (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -45468,1057 +45478,524 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.const 7728 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store offset=8 loop $for-loop|0 - local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $2 - call $~lib/typedarray/Uint32Array#__uget - local.set $4 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#__uget - local.tee $5 - local.get $4 - i32.ne - if - i32.const 12960 - 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 764 - 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/Uint32Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f64) - (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 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - 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 $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - 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 $2 + i32.const 7728 i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 12896 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $6 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $10 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $10 - local.get $1 - i32.const 2 - i32.shl - local.tee $7 - i32.add - f32.load - local.set $3 - local.get $7 - local.get $9 - i32.add - local.get $3 - i32.trunc_sat_f32_u - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 13008 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=20 - local.get $0 - local.get $8 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 13072 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - 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 $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_u - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 13136 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 local.get $2 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer + i32.const 7728 local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 13200 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11008 + local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $1 - i32.lt_s + local.get $2 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $3 + local.get $2 + i32.store offset=4 + local.get $2 + i64.const -1 i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - i64.load32_s - i64.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 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) - (local $2 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 16320 - i32.lt_s + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + call $~lib/typedarray/Uint64Array#indexOf i32.const 3 - i32.shl - i32.add - i64.load - 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) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 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.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 758 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $5 - local.get $4 - i64.ne - if - i32.const 13376 - 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 764 - 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 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $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 16320 - i32.lt_s + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length local.get $2 - i32.const 6 - i32.add - i32.lt_s + i64.const 1 + i32.const 10 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 48 - i32.add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 local.get $2 - i32.const 3 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $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 - local.get $0 - i32.store + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length + i32.const 1 + global.set $~argumentsLength local.get $2 - i32.lt_s + i64.const 11 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.add - i64.load8_u - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const -1 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + 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#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 3 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const 3 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length local.get $2 + i64.const 3 i32.const 4 - i32.add - i32.lt_s + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 3 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 32 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 + local.get $2 + i32.store offset=4 + local.get $2 + 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 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i64.load16_s - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 4 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Uint64Array#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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 633 + 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/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -46533,71 +46010,40 @@ unreachable end 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 20 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7728 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 7728 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 + i32.const 7728 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length local.get $1 - i32.const 7 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 56 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11264 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 i32.store offset=8 - i32.const 11268 - i32.load - local.set $3 - i32.const 0 - local.set $0 loop $for-loop|0 local.get $0 local.get $1 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 local.get $2 local.get $0 - i32.const 3 - i32.shl - i32.add + i32.const 7728 local.get $0 - local.get $3 - i32.add - i64.load8_s - i64.store + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set local.get $0 i32.const 1 i32.add @@ -46606,1820 +46052,2616 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - 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 $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - 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 $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13264 - call $~lib/rt/__newArray - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $7 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $4 - i64.trunc_sat_f32_s - i64.const 0 - local.get $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - select - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13424 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13536 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $8 - local.get $1 - i32.const 3 - i32.shl - local.tee $9 - i32.add - f64.load - local.set $3 - local.get $7 - local.get $9 - i32.add - local.get $3 - i64.trunc_sat_f64_s - i64.const 0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - select - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13648 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13760 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) - (local $2 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 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 0 - i32.store + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 - i32.shl - i32.add - i64.load + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + 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/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + 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 0 - i32.store + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $3 + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 758 + i32.const 614 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Uint64Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array#__uget - local.tee $5 - local.get $4 - i64.ne - if - i32.const 13984 - 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 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - 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 $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - 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 $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - 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 $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 13872 - call $~lib/rt/__newArray - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $7 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $4 - i64.trunc_sat_f32_u - i64.const 0 - local.get $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - select - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 14032 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 14144 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $8 - local.get $1 - i32.const 3 - i32.shl - local.tee $9 - i32.add - f64.load - local.set $3 - local.get $7 - local.get $9 - i32.add - local.get $3 - i64.trunc_sat_f64_u - i64.const 0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - select - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 14256 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 14368 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const 3 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 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.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint32Array#subarray + local.tee $0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 758 + i32.const 628 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Float32Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#__uget - local.tee $5 - local.get $4 - f32.ne - if - i32.const 14544 - 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 764 - 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=4 + 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 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 633 + 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/testTypedArraySet<~lib/typedarray/Float32Array> + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~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 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - 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=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 - 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 $3 + i32.const 7728 i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - 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 $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + local.get $2 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $4 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 7728 local.get $0 - i32.store offset=8 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set local.get $0 - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $8 - loop $for-loop|0 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 2 - i32.shl - local.tee $5 - i32.add - local.get $5 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 62 - i32.const 14480 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - local.get $0 - i32.const 11088 - i32.const 3 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint16Array#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 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint16Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint16Array#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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + 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/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 62 - i32.const 14592 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + i32.const 7728 + i32.store offset=12 + local.get $2 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $6 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $4 - i32.const 6 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $6 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $4 - 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 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 62 - i32.const 14656 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $4 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $1 - loop $for-loop|01 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - f32.convert_i32_u - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|01 - 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 $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $2 - i32.const 4 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $1 - loop $for-loop|02 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f32.convert_i32_s - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|02 - 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 $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $2 - i32.const 7 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 7728 local.get $0 - i32.store offset=8 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set local.get $0 - i32.load offset=4 - i32.const 28 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $4 - i32.const 0 - local.set $1 - loop $for-loop|03 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_s - f32.convert_i32_s - f32.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 12 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint8Array#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 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint8Array#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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + 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/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const -1 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 11 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const -1 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 3 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Int64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 4 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 2 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + 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/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 62 - i32.const 14720 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + i32.const 7728 + i32.store offset=12 + local.get $2 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 i32.const 0 - i32.store + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - local.get $1 i32.const 3 - i32.shl - i32.add - f64.load + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int32Array#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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 633 + 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/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -48435,1214 +48677,1058 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $3 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 7728 i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.tee $5 - local.get $4 - f64.ne - if - i32.const 14896 - 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 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - 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=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - 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 $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $5 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $7 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - f64.convert_i32_s - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 63 - i32.const 14784 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $5 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $7 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 63 - i32.const 14944 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - call $~lib/typedarray/Int64Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $5 - i32.const 6 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 48 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $1 - loop $for-loop|01 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - local.tee $7 - i32.add - local.get $2 - local.get $7 - i32.add - i64.load - f64.convert_i64_s - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|01 - 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 $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 63 - i32.const 15056 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length + i32.const 7728 + i32.store offset=12 local.get $2 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $1 - loop $for-loop|02 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - f64.convert_i32_u - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|02 - 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 + i32.const 7728 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - 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/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $2 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint16Array#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 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Int16Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint16Array#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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + 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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + 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/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64>" + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length local.get $2 - i32.const 4 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 32 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $1 - loop $for-loop|03 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 - 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 12 - 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 11264 - i32.store offset=20 - 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 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length + i32.const 7728 + i32.store offset=12 local.get $2 - i32.const 7 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 56 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $4 - i32.const 0 - local.set $1 - loop $for-loop|04 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $3 - 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 - 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 7728 local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 63 - i32.const 15168 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 0 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const -1 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const 10 + call $~lib/typedarray/Float64Array#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 + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const -100 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const 11 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const -1 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const 3 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/sort/SORT (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) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const -10 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load8_s - local.set $1 - local.get $0 - i32.load8_s offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store8 - local.get $0 - i32.load8_s offset=2 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store8 offset=1 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_s - local.set $1 - local.get $0 - i32.load8_s offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store8 - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store8 offset=1 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - 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 $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const -11 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.ne + if i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Float64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 3 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - local.set $1 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 4 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + if i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 9 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 10 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 1 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + 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/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -49657,465 +49743,522 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + 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 $2 + i32.store offset=4 + local.get $2 + f32.const 0 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const -1 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const 10 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const -100 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 11 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const -1 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 3 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const -10 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Float32Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 4 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load offset=4 + f32.const 5 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - call $~lib/typedarray/Int8Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT + 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 629 + 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 local.get $0 - ) - (func $~lib/util/sort/SORT (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) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 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 16320 - i32.lt_s + i32.store offset=4 + local.get $0 + f32.const 10 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 11 i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - i32.load8_u offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store8 - local.get $0 - i32.load8_u offset=2 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store8 offset=1 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - i32.load8_u offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store8 - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store8 offset=1 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - 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 $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 1 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if i32.const 0 - local.set $1 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1568 + i32.const 633 + 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 $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -50130,43 +50273,60 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - global.get $~lib/memory/__stack_pointer + i32.const 65535 + i32.and + i32.const 7152 local.get $1 - i32.store + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount local.get $1 - call $~lib/util/sort/SORT + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + 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 538 + 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 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/util/sort/SORT (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) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) + (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 @@ -50185,412 +50345,57 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load16_s - local.set $1 - local.get $0 - i32.load16_s offset=2 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store16 - local.get $0 - i32.load16_s offset=4 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store16 offset=2 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store16 offset=4 - end - local.get $0 - i32.load16_s - local.set $1 - local.get $0 - i32.load16_s offset=2 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store16 - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store16 offset=2 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - 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 $1 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + f64.convert_i32_s + local.get $0 + f64.ne + if i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if i32.const 0 - local.set $1 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1568 + i32.const 538 + 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 $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (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 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -50605,2885 +50410,3394 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int16Array#get:length + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 7152 i32.store + i32.const 7152 local.get $1 - call $~lib/util/sort/SORT + call $~lib/array/Array#__get + f32.convert_i32_s + local.get $0 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + 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 538 + 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 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (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) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $7 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4016 + i32.load + call_indirect (type $1) + if + local.get $0 + local.get $4 + i32.add + local.get $5 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 0 - i32.store + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load16_u - local.set $1 - local.get $0 - i32.load16_u offset=2 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store16 - local.get $0 - i32.load16_u offset=4 - local.set $5 - i32.const 2 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Uint8Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $7 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 3984 + i32.load + call_indirect (type $1) + if local.get $0 - local.get $5 - local.get $1 - local.get $3 local.get $4 - select - local.tee $1 - local.get $1 + i32.add local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store16 offset=2 + i32.store8 local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store16 offset=4 + i32.const 1 + i32.add + local.set $0 end - local.get $0 - i32.load16_u - local.set $1 - local.get $0 - i32.load16_u offset=2 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store16 - local.get $0 - local.get $1 - local.get $3 local.get $2 - select - i32.store16 offset=2 - br $folding-inner0 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 end - i32.const 33 local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $4 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.const 1 - i32.shl - call $~lib/rt/tlsf/allocateBlock + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 16 i32.add - local.set $12 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" + (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) + 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 - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $8 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 0 - local.get $1 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4208 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4208 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 + local.get $2 + i32.const 3 i32.shl - local.tee $3 - local.get $10 i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4208 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $8) if - local.get $3 - local.get $11 + local.get $4 + local.get $0 + i32.const 3 + i32.shl i32.add - i32.load + local.get $5 + i64.store + local.get $0 i32.const 1 i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 16 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 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint16Array#sort (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.const 2 + i32.gt_u ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 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) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4144 + i32.load + call_indirect (type $1) + if + local.get $4 local.get $0 - i32.load offset=8 - local.set $5 i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 + i32.shl + i32.add local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store offset=4 + i32.store local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store offset=8 + i32.const 1 + i32.add + local.set $0 end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store - local.get $0 - local.get $1 - local.get $3 local.get $2 - select - i32.store offset=4 - br $folding-inner0 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 + end + local.get $1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if i32.const 0 - local.get $1 - i32.const 1 - i32.sub + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 33 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + 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 16 i32.add - local.set $12 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.gt_u + ) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Uint16Array#constructor + local.tee $8 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 0 - local.get $1 i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - i32.add - local.tee $1 - i32.const 32 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=8 + 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 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 + local.get $7 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 + i32.load16_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add + local.get $2 + local.get $8 + i32.const 4080 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $1) if - local.get $3 - local.get $11 - i32.add - i32.load + local.get $4 + local.get $0 i32.const 1 + i32.shl i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + local.get $5 + i32.store16 local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns + i32.const 1 + i32.add + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + i32.const 1 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 16 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 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int32Array#sort (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.extend8_s + i32.const 2 + i32.gt_s ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store - local.get $0 - i32.load offset=8 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store offset=4 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store offset=4 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - 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 $1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 i32.const 4 - i32.add - local.set $12 + call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3952 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3952 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add + local.get $2 + local.get $8 + i32.const 3952 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $1) if - local.get $3 - local.get $11 + local.get $0 + local.get $4 i32.add - i32.load + local.get $5 + i32.store8 + local.get $0 i32.const 1 i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 16 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 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint32Array#sort (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i64.const 2 + i64.gt_s ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (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 i64) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i64) - (local $17 i64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i64.load - local.set $9 - local.get $0 - i64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $9 - local.get $9 - local.get $16 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store - local.get $0 - i64.load offset=16 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $16 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store offset=8 - local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - i64.store offset=16 - end - local.get $0 - i64.load - local.set $9 - local.get $0 - i64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $9 - local.get $9 - local.get $16 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store - local.get $0 - local.get $9 - local.get $16 - local.get $1 - select - i64.store offset=8 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 i32.shl - local.tee $5 i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $11 - i32.add - local.set $12 - loop $for-loop|1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 local.get $3 - local.get $4 - i32.lt_u + i32.lt_s if - local.get $11 - local.get $3 - i32.const 2 + local.get $7 + local.get $2 + i32.const 3 i32.shl i32.add - i32.const -1 - i32.store - local.get $3 + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4176 + i32.load + call_indirect (type $8) + if + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 i32.const 1 i32.add - local.set $3 - br $for-loop|1 + local.set $2 + br $for-loop|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 $1 + local.get $4 + local.get $0 i32.const 3 i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $13 - global.get $~lib/memory/__stack_pointer - local.get $2 + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 local.get $0 - i32.const 0 + i32.store offset=8 local.get $1 - i32.const 1 - i32.sub - local.tee $10 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.tee $1 - i32.const 32 - i32.lt_s + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - local.set $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.gt_s + ) + (func $"std/typedarray/testArrayFilter<~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) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Int32Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4112 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4112 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $9 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $11 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end local.get $7 + local.get $2 i32.const 2 i32.shl - local.tee $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $12 i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 - i32.add + local.get $2 + local.get $8 + i32.const 4112 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $1) if - local.get $3 - local.get $12 - i32.add - i32.load - i32.const 1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.store local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns + i32.const 1 + i32.add + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 16 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 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int64Array#sort (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.extend16_s + i32.const 2 + i32.gt_s ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayFilter<~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) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i64) - (local $17 i64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Int16Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i64.load - local.set $9 - local.get $0 - i64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $9 - local.get $9 - local.get $16 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store - local.get $0 - i64.load offset=16 - local.set $17 - i32.const 2 - global.set $~argumentsLength + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4048 + i32.load + call_indirect (type $1) + if + local.get $4 local.get $0 - local.get $17 - local.get $9 - local.get $16 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store offset=8 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - i64.store offset=16 + i32.const 1 + i32.add + local.set $0 end - local.get $0 - i64.load - local.set $9 - local.get $0 - i64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $9 - local.get $9 - local.get $16 local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store - local.get $0 - local.get $9 - local.get $16 - local.get $1 - select - i64.store offset=8 - br $folding-inner0 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 end - i32.const 33 local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 + local.get $4 + local.get $0 i32.const 1 i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get i32.const 4 - i32.add - local.tee $11 - i32.add - local.set $12 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $11 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 3 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $13 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 2 + f64.gt + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Float64Array#constructor + local.tee $8 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 0 - local.get $1 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.sub - local.tee $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s if - global.get $~lib/memory/__stack_pointer + local.get $7 local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 + i32.const 3 + i32.shl i32.add - local.tee $6 - local.get $10 + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s + local.get $8 + i32.const 4272 + i32.load + call_indirect (type $12) if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + local.get $4 local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 + i32.const 3 + i32.shl i32.add - local.tee $5 local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $9 - i64.div_u - local.get $5 - local.get $6 - i32.add + local.get $2 i32.const 1 i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $11 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 2 + f32.gt + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + 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 6 + call $~lib/typedarray/Float32Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=8 + 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 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if local.get $7 + local.get $2 i32.const 2 i32.shl - local.tee $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $12 i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 - i32.add + local.get $2 + local.get $8 + i32.const 4240 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $13) if - local.get $3 - local.get $12 + local.get $4 + local.get $0 + i32.const 2 + i32.shl i32.add - i32.load + local.get $5 + f32.store + local.get $0 i32.const 1 i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 16 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 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint64Array#sort (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.store offset=4 + i64.const 1 + i64.and + i64.eqz + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.extend8_s + 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.extend16_s + i32.const 1 + i32.and + i32.eqz ) - (func $~lib/util/sort/SORT (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 f32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i64) - (local $15 i32) - (local $16 i32) - (local $17 f32) - (local $18 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s + (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$1 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $6 + i64.const 2047 + i64.eq if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - f32.load - local.set $9 - local.get $0 - f32.load offset=4 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store - local.get $0 - f32.load offset=8 - local.set $18 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $18 - local.get $9 - local.get $17 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $18 - local.get $2 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store offset=4 + local.get $0 + local.get $0 + f64.add + local.tee $0 + local.get $0 + f64.div + br $__inlined_func$~lib/math/NativeMath.mod$1 + 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$1 + end + local.get $4 + i64.const 63 + i64.shr_u + local.set $5 + local.get $6 + i64.eqz + if (result i64) + local.get $4 + i64.const 1 + local.get $6 + local.get $4 + i64.const 12 + i64.shl + i64.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 $3 + loop $while-continue|0 + local.get $6 + i64.const 1024 + i64.gt_s + if + local.get $3 + i64.const 4503599627370496 + i64.ge_u + if (result i64) local.get $0 - local.get $9 - local.get $18 - local.get $1 - select - f32.store offset=8 + f64.const 0 + f64.mul + local.get $3 + i64.const 4503599627370496 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$1 + drop + local.get $3 + i64.const 4503599627370496 + i64.sub + else + local.get $3 end - local.get $0 - f32.load - local.set $9 - local.get $0 - f32.load offset=4 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store - local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - f32.store offset=4 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + 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 + i64.const 4503599627370496 + i64.ge_u + if local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 + f64.const 0 + f64.mul + local.get $3 + i64.const 4503599627370496 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$1 + drop + local.get $3 + i64.const 4503599627370496 + i64.sub + local.set $3 end - i32.const 33 - local.get $1 - i32.clz - i32.sub + local.get $6 + local.get $3 + i64.const 11 + i64.shl + i64.clz local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl + i64.sub local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT + local.get $3 + local.get $4 + i64.shl + local.set $3 local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $11 - i32.add - local.set $12 - loop $for-loop|1 + i64.const 0 + i64.gt_s + if (result i64) local.get $3 - local.get $4 - i32.lt_u - if - local.get $11 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end + i64.const 4503599627370496 + i64.sub + local.get $6 + i64.const 52 + i64.shl + i64.or + else + local.get $3 + i64.const 1 + local.get $6 + i64.sub + i64.shr_u end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $5 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + end + f64.const 0 + f64.eq + ) + (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 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $2 + i32.const 255 + i32.eq if - call $~lib/rt/tlsf/initialize + local.get $0 + local.get $0 + f32.add + local.tee $0 + local.get $0 + f32.div + br $__inlined_func$~lib/math/NativeMathf.mod end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $13 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 local.get $1 i32.const 1 - i32.sub - local.tee $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s + i32.shl + local.tee $3 + i32.const -2147483648 + i32.le_u if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store local.get $0 - i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 + local.get $3 + i32.const -2147483648 + i32.ne + f32.convert_i32_u + f32.mul + br $__inlined_func$~lib/math/NativeMathf.mod + end + local.get $1 + i32.const -2147483648 + i32.and + local.set $3 + 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 - call $~lib/util/sort/insertionSort + local.get $1 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $2 + i32.sub + i32.shl end - i32.const 0 local.set $1 - i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 - i32.lt_s + loop $while-continue|0 + local.get $2 + i32.const 128 + i32.gt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + local.get $1 + i32.const 8388608 + i32.ge_u + if (result i32) local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $14 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $14 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 + f32.const 0 + f32.mul + local.get $1 + i32.const 8388608 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop + local.get $1 + i32.const 8388608 + i32.sub + else local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $15 - local.get $11 - i32.add - local.tee $16 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $15 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $16 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end end - local.get $7 - i32.const 2 + i32.const 1 i32.shl - local.tee $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $12 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $12 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|4 + local.set $2 + br $while-continue|0 end end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free - 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 - ) - (func $~lib/typedarray/Float32Array#sort (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 8388608 + i32.ge_u + if + local.get $0 + f32.const 0 + f32.mul + local.get $1 + i32.const 8388608 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop + local.get $1 + i32.const 8388608 + i32.sub + local.set $1 + end + local.get $2 + local.get $1 + i32.const 8 + i32.shl + i32.clz + local.tee $4 + i32.sub + local.set $2 + local.get $1 + local.get $4 + i32.shl + local.set $1 + local.get $2 + 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 $3 + i32.or + f32.reinterpret_i32 end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + f32.const 0 + f32.eq ) (func $start:std/typedarray (local $0 i32) @@ -56884,7 +57198,7 @@ local.get $1 i32.const 3184 i32.load - call_indirect (type $22) + call_indirect (type $26) local.set $4 local.get $0 i32.const 1 @@ -57008,7 +57322,7 @@ local.get $1 i32.const 3216 i32.load - call_indirect (type $23) + call_indirect (type $25) local.set $5 local.get $0 i32.const 1 @@ -58884,7 +59198,7 @@ local.get $1 i32.const 3536 i32.load - call_indirect (type $22) + call_indirect (type $26) local.set $4 local.get $0 i32.const 1 @@ -59010,7 +59324,7 @@ local.get $1 i32.const 3568 i32.load - call_indirect (type $23) + call_indirect (type $25) local.set $5 local.get $0 i32.const 1 @@ -63254,7 +63568,7 @@ local.get $1 i32.const 7488 i32.load - call_indirect (type $33) + call_indirect (type $35) local.get $0 i32.const 1 i32.add @@ -63483,13 +63797,13 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $"~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 i32.const 0 local.get $1 call $~lib/typedarray/Int64Array#get:length @@ -63591,13 +63905,13 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $"~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 i32.const 0 local.get $1 call $~lib/typedarray/Int32Array#get:length @@ -67800,320 +68114,4 @@ call $~lib/builtins/abort unreachable ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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 - local.get $1 - i32.shl - local.tee $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $1 - local.get $3 - if - local.get $1 - local.get $3 - local.get $5 - memory.copy - end - 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 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $5 - 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/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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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 8000 - 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 - i32.const 1 - i32.shl - local.tee $0 - select - 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.tee $1 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $0 - local.get $3 - i32.add - local.get $2 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - local.get $0 - 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/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 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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 8000 - return - 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 $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - 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 - local.get $1 - ) - (func $~lib/arraybuffer/ArrayBuffer#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 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - 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.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - 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 - ) ) diff --git a/tests/compiler/std/uri.release.wat b/tests/compiler/std/uri.release.wat index 755065c743..e69563783a 100644 --- a/tests/compiler/std/uri.release.wat +++ b/tests/compiler/std/uri.release.wat @@ -1,13 +1,13 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32) (result i32))) - (type $2 (func (param i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32) (result i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i64))) (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)) @@ -153,790 +153,463 @@ (data $66 (i32.const 4336) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1376 - call $~lib/rt/itcms/__visit - i32.const 1184 - call $~lib/rt/itcms/__visit - i32.const 1584 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 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 4356 + i32.lt_s if - return + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$132 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 37124 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$132 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 4336 - i32.load - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 4340 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $1 local.get $0 - i32.store offset=8 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 + i32.store 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/visitCount + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1520 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + i32.ge_u + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end + i32.const 7 + i32.and + i32.or + else + i32.const 1 end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and i32.eqz if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$88 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$88 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end i32.const 0 - i32.const 1520 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $3 end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + i32.eqz + return end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/uri/encodeURIComponent (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 4356 + i32.lt_s if - i32.const 0 - i32.const 1520 - i32.const 233 - i32.const 14 + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + 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 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1520 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/uri/decodeURI (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s if - i32.const 0 - i32.const 1520 - i32.const 251 - i32.const 14 + i32.const 37152 + i32.const 37200 + 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 - local.get $5 + i32.store + 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 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/uri/decodeURIComponent (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 4356 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 37152 + i32.const 37200 + 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 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 local.get $0 - i32.load offset=4 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/uri/encodeURI (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 4356 + i32.lt_s if - i32.const 0 - i32.const 1520 - i32.const 382 - i32.const 14 + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1520 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1520 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 i32.sub - local.tee $3 + i32.load offset=16 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 $1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz if - unreachable + return end - i32.const 37136 - i32.const 0 - i32.store - i32.const 38704 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 2 - i32.shl - i32.const 37136 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if local.get $1 - i32.const 16 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 37124 i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 37136 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 + else + local.get $0 + i32.const 4336 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 4340 i32.add - local.set $0 - br $for-loop|0 + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 37136 - i32.const 38708 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 37136 - global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1184,147 +857,449 @@ call $~lib/rt/tlsf/insertBlock end end - i32.const 10 - return + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 256 - i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $3 i32.const 4 - i32.shr_u - local.set $1 - else + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.const 536870910 - i32.lt_u + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz 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 + i32.const 0 + i32.const 1520 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 local.get $1 - i32.const 31 + call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $2 i32.const 16 i32.lt_u - local.get $2 + local.get $5 i32.const 23 i32.lt_u i32.and i32.eqz if - i32.const 0 - i32.const 1520 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.const 0 + i32.const 1520 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 end local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add i32.const 2 i32.shl i32.add - i32.load offset=4 - i32.const -1 local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1640,43 +1615,30 @@ memory.fill local.get $1 ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $3 - local.get $1 - i32.store offset=16 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $0 - local.get $0 - local.get $1 - i32.gt_u - select - memory.copy - local.get $2 + unreachable ) (func $~lib/util/uri/encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2606,339 +2568,377 @@ local.get $9 end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - call $start:std/uri - ) - (func $~lib/uri/encodeURIComponent (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 4356 - i32.lt_s - if - i32.const 37152 - i32.const 37200 - 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.store - 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 - 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 $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 - global.get $~lib/memory/__stack_pointer - i32.const 4356 - i32.lt_s - if - i32.const 37152 - i32.const 37200 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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.const 4 i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer + local.set $1 + else local.get $1 - i32.store - local.get $3 + 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 20 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 i32.sub - i32.load offset=16 - i32.const 1 i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub local.set $2 - global.get $~lib/memory/__stack_pointer + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 + i32.ctz + local.get $2 i32.const 4 - i32.ge_u + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $2 - i32.const 7 - i32.and + i32.ctz local.get $1 - i32.const 7 - i32.and - i32.or + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - i32.const 1 + i32.const 0 end - i32.eqz + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37136 + i32.const 0 + i32.store + i32.const 38704 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - loop $do-loop|0 - local.get $2 - i64.load + local.get $0 + i32.const 2 + i32.shl + i32.const 37136 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - i64.load - i64.eq + i32.const 16 + i32.lt_u if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$88 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 + i32.shl local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$88 - local.get $2 + i32.add i32.const 2 + i32.shl + i32.const 37136 i32.add - local.set $2 + i32.const 0 + i32.store offset=96 local.get $1 - i32.const 2 + i32.const 1 i32.add local.set $1 - br $while-continue|1 + br $for-loop|1 end end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + 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 0 + i32.const 37136 + i32.const 38708 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37136 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/uri/encodeURI (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 4356 - i32.lt_s + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 37152 - i32.const 37200 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1520 + i32.const 382 + i32.const 14 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.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/uri/decodeURIComponent (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4356 - i32.lt_s + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - i32.const 37152 - i32.const 37200 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/uri/decodeURI (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4356 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 37152 - i32.const 37200 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.const 20 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 i32.sub - i32.load offset=16 + local.tee $3 i32.const 1 - i32.shr_u + i32.or + i32.or + i32.store + local.get $1 i32.const 0 - call $~lib/util/uri/decode - global.get $~lib/memory/__stack_pointer + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 1584 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~start + call $start:std/uri ) (func $start:std/uri (local $0 i32) diff --git a/tests/compiler/super-inline.release.wat b/tests/compiler/super-inline.release.wat index 68acf73b30..d1ffdaa805 100644 --- a/tests/compiler/super-inline.release.wat +++ b/tests/compiler/super-inline.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32) (result i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -34,63 +34,6 @@ (data $8 (i32.const 1440) "\06\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $super-inline/foo - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $super-inline/bar - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -635,127 +578,331 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (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 $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|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 $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $3 + 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 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + 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 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - else - local.get $0 - i32.const 1572 - i32.add + local.get $2 local.get $1 - i32.gt_u + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.load + i32.const -4 + i32.and + i32.const 28 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $2 local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add + i32.load local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + 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 $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $super-inline/Bar + block $super-inline/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $1 @@ -829,583 +976,270 @@ i32.const 34240 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34236 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $super-inline/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $super-inline/bar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34236 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34236 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__visit_members local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $super-inline/Foo#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$69 - i32.const 2048 - local.set $1 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|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 + 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 1468 + i32.lt_s + br_if $folding-inner0 + 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 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store 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 - local.get $2 - i32.load offset=1568 - memory.size - local.tee $1 - i32.const 16 - i32.shl + global.get $~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 4 i32.sub - 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 $3 - i32.gt_s - select - memory.grow - i32.const 0 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if - local.get $3 - memory.grow + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s - if - unreachable - end + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - 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 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $super-inline/Bar#a (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub + i32.const 34256 + i32.const 34304 i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - 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.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $super-inline/Bar - block $super-inline/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable + global.set $~lib/memory/__stack_pointer ) (func $~start (local $0 i32) @@ -1519,98 +1353,264 @@ call $~lib/builtins/abort unreachable ) - (func $super-inline/Foo#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (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 1468 - i32.lt_s - br_if $folding-inner0 - 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 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - 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 0 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $super-inline/Bar#a (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 1468 - i32.lt_s - if - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34236 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34236 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - 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 ) ) diff --git a/tests/compiler/switch.release.wat b/tests/compiler/switch.release.wat index 361dd42690..9b967b3838 100644 --- a/tests/compiler/switch.release.wat +++ b/tests/compiler/switch.release.wat @@ -65,539 +65,837 @@ (data $23 (i32.const 1936) "\06\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/visitRoots - (local $0 i32) - (local $1 i32) - global.get $switch/foo1 - local.tee $0 - if + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $switch/foo2 - local.tee $0 - if + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1520 - call $~lib/rt/itcms/__visit - i32.const 1328 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + local.tee $2 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.store + block $__inlined_func$~lib/string/String#concat$191 + local.get $1 i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + i32.sub + i32.load offset=16 + i32.const -2 i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 + local.tee $4 + local.get $3 + i32.add local.tee $0 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1296 + local.set $0 + br $__inlined_func$~lib/string/String#concat$191 end + global.get $~lib/memory/__stack_pointer local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$186 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and + i32.const 2 + call $~lib/rt/itcms/__new local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34732 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$186 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else local.get $0 - i32.const 1936 - i32.load - i32.gt_u - if - i32.const 1520 - i32.const 1584 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end + local.get $2 + local.get $3 + memory.copy local.get $0 - i32.const 2 - i32.shl - i32.const 1940 + local.get $3 i32.add - i32.load - i32.const 32 - i32.and + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer 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/visitCount + return + end + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $switch/doSwitchNullableString (param $0 i32) (result 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 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1104 + call $~lib/string/String.__eq + br_if $case1|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1136 + call $~lib/string/String.__eq + br_if $case2|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1168 + call $~lib/string/String.__eq + br_if $case3|0 + br $case4|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + 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 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - global.set $~lib/rt/itcms/visitCount + global.set $~lib/memory/__stack_pointer + i32.const 3 + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $switch/doSwitchString (param $0 i32) (result 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 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $0 + i32.const 1104 + call $~lib/string/String.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1136 + call $~lib/string/String.__eq + br_if $case1|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1168 + call $~lib/string/String.__eq + br_if $case2|0 + br $case3|0 + end + global.get $~lib/memory/__stack_pointer + 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 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s if - i32.const 0 - i32.const 1664 - i32.const 268 - i32.const 14 + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - i32.const 0 - i32.const 1664 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$76 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$76 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1664 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 + return end - local.get $1 + global.get $~lib/rt/itcms/white local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add + i32.const 20 + i32.sub local.tee $1 - i32.load offset=96 + i32.load offset=4 + i32.const 3 + i32.and i32.eq if local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$186 + local.get $1 i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 + local.tee $0 i32.eqz if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34732 + i32.lt_u i32.and - i32.store + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$186 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + 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 end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1936 + i32.load + i32.gt_u + if + i32.const 1520 + i32.const 1584 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1940 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 - i32.const 4 - i32.add + select local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + i32.or + i32.store offset=4 local.get $1 - i32.const 4 - i32.add + local.get $0 + i32.store offset=8 + local.get $0 local.get $1 - i32.load - i32.const -4 + local.get $0 + i32.load offset=4 + i32.const 3 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if + i32.or + i32.store offset=4 + local.get $2 local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + global.set $~lib/rt/itcms/visitCount end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + ) + (func $switch/FooClass#constructor (param $0 i32) (result i32) + (local $1 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 1964 + i32.lt_s if - i32.const 0 - i32.const 1664 - i32.const 233 - i32.const 14 + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $2 - i32.add - i32.ne + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $switch/BarClass#constructor (param $0 i32) (result i32) + (local $1 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 1964 + i32.lt_s if - i32.const 0 - i32.const 1664 - i32.const 234 - i32.const 14 + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 + i32.const 0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $switch/doSwitchClassInstanceWithOverload (param $0 i32) (result i32) + (local $1 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 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $0 + i32.const 0 + call $switch/BarClass.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + call $switch/BarClass#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $switch/BarClass.__eq + br_if $case1|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + call $switch/BarClass#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $switch/BarClass.__eq + br_if $case2|0 + br $case3|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -605,569 +903,256 @@ if i32.const 0 i32.const 1664 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1664 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + local.tee $1 + i32.load offset=96 + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1664 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1664 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34736 - i32.const 0 - i32.store - i32.const 36304 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34736 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34736 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34736 - i32.const 36308 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34736 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34732 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34732 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34732 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1664 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - i32.const 10 - return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 256 - i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $3 i32.const 4 - i32.shr_u - local.set $1 - else + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.const 536870910 - i32.lt_u + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz 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 + i32.const 0 + i32.const 1664 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 local.get $1 - i32.const 31 + call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1664 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $2 i32.const 16 i32.lt_u - local.get $2 + local.get $5 i32.const 23 i32.lt_u i32.and @@ -1175,78 +1160,66 @@ if i32.const 0 i32.const 1664 - i32.const 334 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 i32.const 2 i32.shl i32.add + local.tee $0 + local.get $0 i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 1 + local.get $2 i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end + i32.or + i32.store offset=4 ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1519,248 +1492,83 @@ 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 $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - 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 $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $switch/BarClass - block $switch/FooClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:switch - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + 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 $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $switch/BarClass + block $switch/FooClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid + end + return + end + return + end + return end - end - end - block $__inlined_func$~lib/util/string/compareImpl$76 - loop $while-continue|1 local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$76 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end + i32.load + call $~lib/rt/itcms/__visit + return end - i32.const 0 - local.set $3 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 + unreachable ) - (func $switch/doSwitchString (param $0 i32) (result i32) + (func $switch/doSwitchClassMember (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1775,171 +1583,102 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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.store offset=4 - block $case3|0 - block $case2|0 - block $case1|0 + i32.store + block $case2|0 + block $case1|0 + local.get $0 + i32.load + local.tee $0 + i32.const 1 + i32.ne + if local.get $0 - i32.const 1104 - call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1136 - call $~lib/string/String.__eq - br_if $case1|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1168 - call $~lib/string/String.__eq - br_if $case2|0 - br $case3|0 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + i32.const 2 + i32.eq + br_if $case1|0 + br $case2|0 end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 2 + i32.const 1 return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3 + i32.const 2 return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 4 + i32.const 3 ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $switch/doSwitchClassInstance (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$191 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + 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.store + block $case2|0 + block $case1|0 + global.get $switch/foo1 + local.get $0 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1296 - local.set $0 - br $__inlined_func$~lib/string/String#concat$191 + local.get $0 + global.get $switch/foo2 + i32.eq + br_if $case1|0 + br $case2|0 end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 1 + return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 2 return end - i32.const 34752 - i32.const 34800 - i32.const 1 - 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 3 ) - (func $switch/doSwitchNullableString (param $0 i32) (result i32) + (func $switch/BarClass.__eq (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 global.get $~lib/memory/__stack_pointer @@ -1954,374 +1693,689 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.eq global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=4 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1104 - call $~lib/string/String.__eq - br_if $case1|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1136 - call $~lib/string/String.__eq - br_if $case2|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1168 - call $~lib/string/String.__eq - br_if $case3|0 - br $case4|0 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer i32.const 2 - return + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 - return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 4 ) - (func $switch/FooClass#constructor (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 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 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new + memory.size local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $switch/doSwitchClassMember (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 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - i32.const 1 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 34736 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36304 + i32.const 0 i32.store - block $case2|0 - block $case1|0 + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - i32.load - local.tee $0 - i32.const 1 - i32.ne - if - local.get $0 - i32.const 2 - i32.eq - br_if $case1|0 - br $case2|0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 2 + i32.shl + i32.const 34736 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34736 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 i32.const 1 - return + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 + i32.const 34736 + i32.const 36308 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34736 + global.set $~lib/rt/tlsf/ROOT ) - (func $switch/BarClass.__eq (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 1964 - i32.lt_s + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1664 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 local.get $1 - i32.eq + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1664 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1664 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $1 - i32.load - i32.eq - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $switch/BarClass#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.and + local.get $3 i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - global.get $~lib/memory/__stack_pointer local.get $1 + i32.const 0 i32.store offset=4 local.get $1 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.store offset=8 local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $switch/doSwitchClassInstanceWithOverload (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 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 1964 - i32.lt_s + global.get $switch/foo1 + local.tee $0 if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - block $case3|0 + global.get $switch/foo2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1520 + call $~lib/rt/itcms/__visit + i32.const 1328 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~start + call $start:switch + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 block $case2|0 block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34732 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34732 + i32.lt_u + if local.get $0 i32.const 0 - call $switch/BarClass.__eq - i32.eqz + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34732 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 1 - call $switch/BarClass#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 - call $switch/BarClass.__eq - br_if $case1|0 - global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + local.set $2 local.get $0 - i32.store offset=4 - i32.const 2 - call $switch/BarClass#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 + i32.const 15 + i32.and + i32.const 1 local.get $0 - local.get $1 - call $switch/BarClass.__eq - br_if $case2|0 - br $case3|0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1664 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 + i32.const 10 return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 + i32.const 0 ) (func $start:switch (local $0 i32) @@ -2913,58 +2967,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $switch/doSwitchClassInstance (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 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - 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.store - block $case2|0 - block $case1|0 - global.get $switch/foo1 - local.get $0 - i32.ne - if - local.get $0 - global.get $switch/foo2 - i32.eq - br_if $case1|0 - br $case2|0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 - ) ) diff --git a/tests/compiler/templateliteral.release.wat b/tests/compiler/templateliteral.release.wat index f863de7667..e99c91217f 100644 --- a/tests/compiler/templateliteral.release.wat +++ b/tests/compiler/templateliteral.release.wat @@ -3,14 +3,14 @@ (type $1 (func (param i32) (result i32))) (type $2 (func)) (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param f64) (result i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param f64) (result i32))) + (type $6 (func (param i32 i32))) (type $7 (func (param i32 i32 i32 i32))) (type $8 (func (param i32 i32 i64))) - (type $9 (func (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) (type $10 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $11 (func (param i32 i32 i32) (result i32))) + (type $11 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -140,1668 +140,1670 @@ (data $62 (i32.const 5872) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\04A\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1408 - call $~lib/rt/itcms/__visit - i32.const 1216 - call $~lib/rt/itcms/__visit - i32.const 2464 - call $~lib/rt/itcms/__visit - i32.const 3520 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + 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 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1280 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$91 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$91 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) + (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 - global.get $~lib/rt/itcms/iter - i32.eq + i32.eqz if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 0 + i32.const 1280 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$165 + 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 -4 + i32.const 3 i32.and - local.tee $1 + local.tee $3 + global.get $~lib/rt/itcms/white i32.eqz + i32.eq if local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 38672 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + 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 + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray end - br $__inlined_func$~lib/rt/itcms/Object#unlink$165 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable end - 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 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 i32.const 1 - else - local.get $1 - i32.const 5872 - i32.load - i32.gt_u - if - i32.const 1408 - i32.const 1472 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 5876 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 + i32.store local.get $1 - i32.load offset=4 - i32.const 3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 i32.and - i32.or - i32.store offset=4 + local.tee $3 local.get $2 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 + i32.add + local.tee $4 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1184 return end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 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 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end + local.get $2 + memory.copy + local.get $2 + local.get $4 + i32.add + local.get $1 + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 268 - i32.const 14 + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$75 + 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 2032 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$75 + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1552 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else + local.get $0 + i32.sub + local.get $0 + local.get $0 i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u + i32.shr_u + i32.const 1 + i32.shl + local.tee $1 select local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 + 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 $2 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $1 + i32.add local.get $3 - local.get $4 + local.get $2 + 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 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.add + global.set $~lib/memory/__stack_pointer end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.get $0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1552 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 - local.tee $4 + i32.const 3 + i32.and + i32.eq if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.get $5 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) + (local $1 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 5904 + i32.lt_s if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 2 - i32.shl + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + local.get $0 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (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 $1 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1552 - i32.const 203 - i32.const 14 + i32.const 1216 + i32.const 1280 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|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 + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|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 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1216 + i32.const 1552 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + 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 $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1552 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1552 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1552 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 + local.tee $3 + i32.const 16 + i32.ge_u + if local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 local.get $3 i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 local.get $3 - local.get $1 - i32.store offset=4 + i32.load + i32.const -3 + i32.and + i32.store end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 + i32.store offset=12 + local.get $2 local.get $0 - i32.load offset=4 - i32.const 1 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 local.get $2 - i32.shl + local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1552 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1552 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1552 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end + local.get $3 + i32.store offset=8 + local.get $3 local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 + (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 5904 i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 38672 - i32.const 0 - i32.store - i32.const 40240 - i32.const 0 - i32.store - loop $for-loop|0 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 23 - i32.lt_u + i32.store offset=4 + 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5328 + local.get $0 + call $~lib/string/String#concat + global.get $~lib/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 + return + end + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + 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 3776 + local.set $1 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne if + i32.const 3808 + local.set $1 local.get $0 - i32.const 2 - i32.shl - i32.const 38672 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 + local.get $0 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 3840 + i32.const 3888 + local.get $0 + f64.const 0 + f64.lt + select + local.set $1 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 3920 + local.get $2 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/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 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 38672 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 i32.const 1 + i32.shl i32.add - local.set $0 - br $for-loop|0 + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - i32.const 38672 - i32.const 40244 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 38672 - global.set $~lib/rt/tlsf/ROOT + 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 2044 + 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 2044 + 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/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 i32.load offset=4 - i32.const -4 + i32.const -2 + local.get $3 + i32.rotl i32.and - i32.eq + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 38672 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1280 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 38672 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 38672 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1552 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + i32.store end - i32.const 10 - return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 256 - i32.lt_u + i32.eqz if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - 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 - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 0 + i32.const 1552 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + i32.load + local.tee $3 + i32.const 1 i32.and i32.eqz if i32.const 0 i32.const 1552 - i32.const 334 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.const 2 - i32.shl + local.get $1 + i32.const 4 i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.load + i32.const -4 i32.and - local.tee $1 - if (result i32) + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.ctz + local.get $3 + i32.const 4 + i32.add local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.shl i32.add - i32.const 2 - i32.shl + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - i32.load offset=96 - else - local.get $0 + local.tee $4 i32.load - i32.const -1 - local.get $2 + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 i32.const 1 - i32.add - i32.shl i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1216 - i32.const 1280 - i32.const 261 - 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$70 - i32.const 2048 - local.set $2 - loop $do-loop|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 - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|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 - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1216 - i32.const 1552 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - 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 $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - 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 $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1552 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1552 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1552 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $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 $1 - i32.load offset=8 - local.set $3 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 - local.get $2 - local.get $3 - 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 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add + i32.const 2 + i32.shl i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl i32.add - local.tee $1 - i32.const 0 + local.tee $0 local.get $0 - memory.fill - local.get $1 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 295 - 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 + global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.const 20 - i32.sub - local.tee $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$165 + local.get $0 i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - local.tee $3 - global.get $~lib/rt/itcms/white + local.tee $1 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 - local.get $3 - i32.const 3 - i32.eq + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 38672 + i32.lt_u i32.and + i32.eqz if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1280 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$165 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 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz 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 2044 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2044 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + i32.const 0 + i32.const 1280 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 + local.get $1 local.get $2 - i32.const 2 - i32.sub - local.tee $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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.shl - i32.add + else + local.get $1 + i32.const 5872 + i32.load + i32.gt_u + if + i32.const 1408 + i32.const 1472 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 100 - i32.rem_u i32.const 2 i32.shl - i32.const 2044 + i32.const 5876 i32.add i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 local.get $1 - i32.const 10 - i32.ge_u - if + 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/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + block $templateliteral/RecursiveObject + block $templateliteral/Ref + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + 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 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 2044 - i32.add i32.load - i32.store - else + call $~lib/rt/itcms/__visit local.get $0 - local.get $2 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $templateliteral/Ref#constructor (param $0 i32) (result i32) + (local $1 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 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 i32.const 1 - i32.sub i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) + (func $templateliteral/RecursiveObject#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1816,632 +1818,842 @@ unreachable end 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 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 i32.store - block $__inlined_func$~lib/util/number/itoa32$75 - 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 2032 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32$75 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.const 31 - i32.shr_u + i32.load + i32.const -1 + local.get $2 i32.const 1 + i32.add i32.shl + i32.and local.tee $1 - select - 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 + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 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 + i32.const 0 end - local.tee $2 + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - i32.shl local.get $1 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 38672 + i32.const 0 + i32.store + i32.const 40240 + i32.const 0 + i32.store + loop $for-loop|0 local.get $0 - local.get $1 - i32.add - local.get $3 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $1 + i32.const 23 + i32.lt_u 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/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $10 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $11 + i32.const 2 + i32.shl + i32.const 38672 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 38672 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 38672 + i32.const 40244 + memory.size i64.extend_i32_s - local.tee $0 + i64.const 16 i64.shl - local.tee $7 - i64.const 1 - i64.sub - local.tee $12 + call $~lib/rt/tlsf/addMemory + i32.const 38672 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i64.and - local.set $9 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 local.get $5 - i32.const 1000 - i32.ge_u - i32.add + local.set $1 end else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end end - local.set $8 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 1216 + call $~lib/rt/itcms/__visit + i32.const 2464 + call $~lib/rt/itcms/__visit + i32.const 3520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 loop $while-continue|0 - local.get $8 - i32.const 0 - i32.gt_s + local.get $0 + local.get $1 + i32.ne 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 $5 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $6 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $6 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $4 - local.get $6 - i32.or - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 3920 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $9 - i64.add - local.tee $0 - i64.ge_u + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 4848 - i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $7 - local.get $4 - i32.const 1 - i32.shl - i32.const 3918 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|3 - local.get $0 - local.get $10 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $7 - i64.ge_u - i32.and - if (result i32) - local.get $10 - local.get $0 - local.get $7 - i64.add - local.tee $1 - i64.gt_u - local.get $10 - local.get $0 - i64.sub - local.get $1 - local.get $10 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $0 - local.get $7 - i64.add - local.set $0 - br $while-continue|3 - end - end - local.get $2 - local.get $6 - i32.store16 - local.get $4 - return + i32.const 0 + i32.const 1280 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $9 - i64.const 10 - i64.mul - local.tee $1 - local.get $11 - i64.extend_i32_s - i64.shr_u - local.tee $0 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 3920 + local.get $0 + i32.const 20 i32.add + call $~lib/rt/__visit_members local.get $0 - i32.wrap_i64 - i32.const 65535 + i32.load offset=4 + i32.const -4 i32.and - i32.const 48 - i32.add - i32.store16 + local.set $0 + br $while-continue|0 end - local.get $8 + end + ) + (func $templateliteral/RecursiveObject#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 i32.const 1 - i32.sub - local.set $8 - local.get $1 - local.get $12 - i64.and - local.tee $9 - local.get $3 - i64.ge_u - br_if $while-continue|4 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 4848 - i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 3918 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|6 - local.get $1 - local.get $9 - i64.gt_u - local.get $3 - local.get $9 - i64.sub - local.get $7 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $7 - local.get $9 - i64.add - local.tee $0 - i64.gt_u - local.get $1 - local.get $9 - i64.sub - local.get $0 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $7 - local.get $9 - i64.add - local.set $9 - br $while-continue|6 - end - end - local.get $2 - local.get $6 - i32.store16 - local.get $4 - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $2 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $1 i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 i32.store - local.get $1 - i32.const 2 + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add + global.set $~lib/memory/__stack_pointer return end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - 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 - 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 $3 + call $templateliteral/RecursiveObject#toString + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + i32.const 5824 + local.get $0 + i32.store + i32.const 5824 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + i32.const 5832 + local.get $1 + i32.store + i32.const 5824 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + i32.const 5824 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:templateliteral + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 i32.const 1 - i32.shl + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + 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 16 i32.add - i32.const 3145774 + global.set $~lib/memory/__stack_pointer + i32.const 1184 + return + end + local.get $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 i32.store - local.get $3 - i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - else - local.get $3 - i32.const 21 - i32.le_s + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 1184 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 local.get $3 - i32.const 0 i32.gt_s - i32.and - if (result i32) + if + global.get $~lib/memory/__stack_pointer 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 - 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 - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 + i32.load + local.tee $5 + i32.store offset=4 + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $2 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $2 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1180 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + local.get $4 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $4 + 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 $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + i32.const 1 + i32.shl + memory.copy + local.get $3 + local.get $6 + i32.add + local.set $3 + end + local.get $1 + if + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $3 + i32.add + local.set $3 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + 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.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 + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + 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 + 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 $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 + local.get $3 + i32.const 0 + i32.gt_s + i32.and + 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 + 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 + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.const 2 + local.get $3 + i32.sub + local.tee $3 i32.const 1 i32.shl i32.add @@ -2668,1076 +2880,1122 @@ end end ) - (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) (local $10 i64) - (local $11 i64) + (local $11 i32) (local $12 i64) - (local $13 i64) - (local $14 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $2 - if (result f64) - i32.const 3920 - i32.const 45 - i32.store16 - local.get $0 - f64.neg - else - local.get $0 - end - i64.reinterpret_f64 - local.tee $1 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 1 - local.get $4 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub local.get $1 - i64.const 4503599627370495 - i64.and - local.get $4 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - local.tee $1 - i64.const 1 - i64.shl + local.get $0 + i64.sub + local.set $9 i64.const 1 - i64.add - local.tee $3 - i64.clz - i32.wrap_i64 - local.tee $9 + i32.const 0 + local.get $2 i32.sub - local.set $4 - local.get $3 - local.get $9 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $1 - local.get $1 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $9 + local.tee $11 i64.extend_i32_s + local.tee $0 i64.shl + local.tee $10 i64.const 1 i64.sub - local.get $8 - local.get $9 - 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 $0 - i32.trunc_sat_f64_s - local.tee $4 - local.get $4 - f64.convert_i32_s - local.get $0 - 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 $8 - i32.sub - global.set $~lib/util/number/_K - local.get $8 - i32.const 3976 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 4672 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $1 + local.tee $12 local.get $1 - i64.clz - i64.shl - local.tee $1 - i64.const 4294967295 - i64.and - local.set $5 - global.get $~lib/util/number/_frc_pow - local.tee $10 - i64.const 4294967295 i64.and - local.tee $11 + local.set $8 local.get $1 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $5 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $6 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $12 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - local.get $11 - i64.mul - local.get $11 - local.get $12 - i64.mul - i64.const 32 + local.get $0 i64.shr_u - i64.add + i32.wrap_i64 + 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 $7 - global.get $~lib/util/number/_frc_minus - local.tee $13 - i64.const 4294967295 - i64.and - local.set $14 - local.get $13 - i64.const 32 - i64.shr_u - local.tee $13 - local.get $11 - i64.mul - local.get $11 - local.get $14 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $11 - local.get $2 - i32.const 1 - i32.shl - i32.const 3920 - i32.add - local.get $1 - local.get $10 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $6 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $5 - 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 - local.get $1 - local.get $3 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $12 - 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.tee $3 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $3 - local.get $1 - local.get $13 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $14 - i64.mul - local.get $11 - 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 $2 - call $~lib/util/number/genDigits - local.get $2 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $2 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - 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 3776 - local.set $1 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if - i32.const 3808 - local.set $1 - local.get $0 - local.get $0 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 3840 - i32.const 3888 - local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $~lib/util/number/dtoa_impl|inlined.0 - 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 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 3920 - local.get $2 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $start:templateliteral - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - memory.size - i32.const 16 - i32.shl - i32.const 38672 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + loop $while-continue|0 + local.get $7 i32.const 0 - i32.const 28 - memory.fill - 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 1056 - i32.store offset=8 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 4 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=16 - i32.const 1056 - i32.const 1088 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz + i32.gt_s if - i32.const 0 - i32.const 1120 - i32.const 5 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 1744 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=16 - i32.const 1748 - i32.const 1056 - i32.store - i32.const 1744 - i32.const 1056 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 1744 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=16 - i32.const 1756 - i32.const 1088 - i32.store - i32.const 1744 - i32.const 1088 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 1744 - i32.store offset=12 - i32.const 1744 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 1792 - call $~lib/string/String.__eq - i32.eqz + 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 $2 + i32.const 1000000000 + i32.div_u + local.set $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + 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 $5 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $5 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $5 + end + local.get $4 + local.get $5 + i32.or + if + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.const 1 + i32.shl + i32.const 3920 + i32.add + local.get $5 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $3 + local.get $2 + i64.extend_i32_u + local.get $11 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $8 + i64.add + local.tee $0 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 4848 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 + i32.const 1 + i32.shl + i32.const 3918 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u + local.get $3 + local.get $0 + i64.sub + local.get $1 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $0 + local.get $1 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $0 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 + end + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + local.get $8 + i64.const 10 + i64.mul + local.tee $0 + local.get $11 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne if - i32.const 0 - i32.const 1120 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.shl + i32.const 3920 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 end - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $7 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 13 - i32.const 3 - 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 offset=4 - i32.const 2 - call $~lib/number/I32#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.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 14 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/number/I32#toString - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2 - call $~lib/number/I32#toString - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3680 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3684 - local.get $0 - i32.store - i32.const 3680 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3680 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - i32.const 3692 - local.get $1 - i32.store - i32.const 3680 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3680 - i32.store offset=4 - i32.const 3680 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer + local.set $7 local.get $0 - i32.store + local.get $12 + i64.and + local.tee $8 + local.get $3 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 4848 + i32.add + i64.load32_u + i64.mul + local.set $0 + local.get $4 + i32.const 1 + i32.shl + i32.const 3918 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|6 local.get $0 - i32.const 3728 - call $~lib/string/String.__eq - i32.eqz - if + local.get $8 + i64.gt_u + local.get $3 + local.get $8 + i64.sub + local.get $10 + i64.ge_u + i32.and + if (result i32) + local.get $0 + local.get $8 + local.get $10 + i64.add + local.tee $1 + i64.gt_u + local.get $0 + local.get $8 + i64.sub + local.get $1 + local.get $0 + i64.sub + i64.gt_u + i32.or + else i32.const 0 - i32.const 1120 - 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 5904 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - f64.const 1 - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4912 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $10 + i64.add + local.set $8 + br $while-continue|6 end - f64.const 1 - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - f64.const 2 - call $~lib/number/F64#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.set $0 - global.get $~lib/memory/__stack_pointer + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + ) + (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) + (local $1 i64) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + local.get $0 + f64.const 0 + f64.lt + local.tee $2 + if (result f64) + i32.const 3920 + i32.const 45 + i32.store16 local.get $0 - i32.store + f64.neg + else local.get $0 - i32.const 4944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - f64.const 1 - call $~lib/number/F64#toString - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - f64.const 2 - call $~lib/number/F64#toString - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 4980 - local.get $0 - i32.store - i32.const 4976 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - i32.const 4988 - local.get $1 - i32.store - i32.const 4976 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - i32.const 4976 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 5024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - 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 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner1 - 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 1088 - i32.store - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 31 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 32 - i32.const 3 - 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 offset=8 - i32.const 5104 - local.get $0 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=8 - i32.const 5104 - i32.const 1088 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 34 - i32.const 3 - 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 offset=8 - local.get $0 - i32.const 5200 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=8 - i32.const 1088 - i32.const 5200 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5264 - call $~lib/string/String.__eq - i32.eqz - if + end + i64.reinterpret_f64 + local.tee $1 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $4 + i32.const 1 + local.get $4 + select + i32.const 1075 + i32.sub + local.tee $8 + i32.const 1 + i32.sub + local.get $1 + i64.const 4503599627370495 + i64.and + local.get $4 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.tee $1 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $3 + i64.clz + i32.wrap_i64 + local.tee $9 + i32.sub + local.set $4 + local.get $3 + local.get $9 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $1 + local.get $1 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $9 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $8 + local.get $9 + 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 $0 + i32.trunc_sat_f64_s + local.tee $4 + local.get $4 + f64.convert_i32_s + local.get $0 + 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 $8 + i32.sub + global.set $~lib/util/number/_K + local.get $8 + i32.const 3976 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $4 + i32.const 1 + i32.shl + i32.const 4672 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $1 + local.get $1 + i64.clz + i64.shl + local.tee $1 + i64.const 4294967295 + i64.and + local.set $5 + global.get $~lib/util/number/_frc_pow + local.tee $10 + i64.const 4294967295 + i64.and + local.tee $11 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $5 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $6 + global.get $~lib/util/number/_frc_plus + local.tee $3 + i64.const 4294967295 + i64.and + local.set $12 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $11 + i64.mul + local.get $11 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + global.get $~lib/util/number/_frc_minus + local.tee $13 + i64.const 4294967295 + i64.and + local.set $14 + local.get $13 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $11 + i64.mul + local.get $11 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $11 + local.get $2 + i32.const 1 + i32.shl + i32.const 3920 + i32.add + local.get $1 + local.get $10 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $6 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $5 + 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 + local.get $1 + local.get $3 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $12 + 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.tee $3 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $3 + local.get $1 + local.get $13 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $14 + i64.mul + local.get $11 + 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 $2 + call $~lib/util/number/genDigits + local.get $2 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $2 + i32.add + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end i32.const 0 - i32.const 1120 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 38672 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=12 - local.get $0 - i32.const 1088 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5296 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1120 - i32.const 37 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.and + i32.ne + if + i32.const 0 + i32.const 1280 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 38672 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 38672 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1552 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - 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 32 - i32.sub - global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $start:templateliteral + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + memory.size + i32.const 16 + i32.shl + i32.const 38672 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 5904 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 32 + i32.const 28 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 1 - call $templateliteral/Ref#constructor - local.tee $2 + i32.const 1056 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2 - call $templateliteral/Ref#constructor - local.tee $0 + i32.const 1088 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $2 - call $templateliteral/Ref#toString - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 1056 i32.store offset=8 - local.get $1 - i32.const 5360 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 51 + i32.const 4 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $2 - call $templateliteral/Ref#toString - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 1056 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - local.get $0 - call $templateliteral/Ref#toString - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 1088 i32.store offset=16 - local.get $1 - local.get $3 + i32.const 1056 + i32.const 1088 call $~lib/string/String#concat - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 - local.get $1 - i32.const 5392 + local.get $0 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 52 + i32.const 5 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 + i32.const 1056 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $2 - call $templateliteral/Ref#toString - local.tee $1 + i32.const 1088 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $templateliteral/Ref#toString - local.tee $0 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 1744 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 1056 i32.store offset=16 - i32.const 5444 - local.get $1 + i32.const 1748 + i32.const 1056 i32.store - i32.const 5440 - local.get $1 + i32.const 1744 + i32.const 1056 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 1744 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1088 i32.store offset=16 - i32.const 5452 - local.get $0 + i32.const 1756 + i32.const 1088 i32.store - i32.const 5440 - local.get $0 + i32.const 1744 + i32.const 1088 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 1744 i32.store offset=12 - i32.const 5440 + i32.const 1744 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 5488 + i32.const 1792 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 53 + i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 28 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3746,76 +4004,116 @@ br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 28 + i32.const 20 memory.fill + i32.const 1 + call $~lib/number/I32#toString + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 3 - call $templateliteral/Ref#constructor - local.tee $0 + local.get $0 i32.store + local.get $0 + i32.const 3616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 13 + i32.const 3 + 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 offset=4 + i32.const 2 + call $~lib/number/I32#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.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - call $templateliteral/Ref#toString + i32.store + local.get $0 + i32.const 3648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 14 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/number/I32#toString local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.const 2 + call $~lib/number/I32#toString + local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 5664 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=8 + i32.const 3680 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=24 - i32.const 5620 + i32.store offset=8 + i32.const 3684 local.get $0 i32.store - i32.const 5616 + i32.const 3680 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=8 + i32.const 3680 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5664 - i32.store offset=24 - i32.const 5628 - i32.const 5664 + local.get $1 + i32.store offset=8 + i32.const 3692 + local.get $1 i32.store - i32.const 5616 - i32.const 5664 + i32.const 3680 + local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=8 - i32.const 5616 + i32.const 3680 + i32.store offset=4 + 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 offset=4 + i32.store local.get $0 - i32.const 5696 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 60 + i32.const 15 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3830,47 +4128,108 @@ i32.const 0 i32.const 20 memory.fill + f64.const 1 + call $~lib/number/F64#toString + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 5760 - i32.const 0 - call $templateliteral/RecursiveObject#constructor - local.tee $0 + local.get $0 i32.store + local.get $0 + i32.const 4912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/number/F64#toString + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + f64.const 2 + call $~lib/number/F64#toString + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 1088 - local.get $0 - call $templateliteral/RecursiveObject#constructor - local.tee $0 + local.get $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + local.get $1 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 1056 local.get $0 - call $templateliteral/RecursiveObject#constructor + i32.store + local.get $0 + i32.const 4944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f64.const 1 + call $~lib/number/F64#toString local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + f64.const 2 + call $~lib/number/F64#toString + local.tee $1 i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - call $templateliteral/RecursiveObject#toString + i32.store offset=8 + i32.const 4980 + local.get $0 + i32.store + i32.const 4976 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4988 + local.get $1 + i32.store + i32.const 4976 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + i32.const 4976 + call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 - i32.const 5856 + i32.const 5024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 125 + i32.const 24 i32.const 3 call $~lib/builtins/abort unreachable @@ -3879,839 +4238,479 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - return - end - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - block $invalid - block $templateliteral/RecursiveObject - block $templateliteral/Ref - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - 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 - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:templateliteral - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - 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 - local.get $1 - i32.eq - if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + i32.const 16 + i32.sub global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 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 - local.set $3 + i32.const 5904 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 + 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 + i32.const 1088 i32.store - local.get $0 - local.set $2 + i32.const 2 + call $~lib/number/I32#toString + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end + local.get $0 + i32.const 5072 + call $~lib/string/String.__eq i32.eqz if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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-loop|0 - end - end + i32.const 0 + i32.const 1120 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/util/string/compareImpl$91 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$91 - local.get $2 - i32.const 2 - i32.add - local.set $2 - 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 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - local.set $3 + i32.const 1120 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable end + i32.const 2 + call $~lib/number/I32#toString + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $0 + i32.store offset=8 + i32.const 5104 + local.get $0 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5136 + call $~lib/string/String.__eq i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 -2 - i32.and - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $3 - local.get $2 - i32.add - local.tee $4 - i32.eqz - if + if + i32.const 0 + i32.const 1120 + i32.const 33 + 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 1184 - return - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $0 - local.get $2 - memory.copy - local.get $2 - local.get $4 - i32.add - local.get $1 - local.get $3 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if + i32.const 1088 + i32.store offset=8 + i32.const 5104 + i32.const 1088 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1184 - return - end - local.get $4 - i32.eqz - if + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 34 + i32.const 3 + 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.load - local.tee $0 - i32.store + i32.store offset=8 + local.get $0 + i32.const 5200 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 1184 + i32.store offset=4 local.get $0 - select - return - end - loop $for-loop|0 - local.get $1 - local.get $3 - i32.gt_s + i32.const 5232 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - i32.store offset=4 - local.get $5 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $2 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $2 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + i32.const 0 + i32.const 1120 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - i32.const 0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1180 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - local.get $4 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $4 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=8 + i32.const 1088 + i32.const 5200 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5264 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $5 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $6 - i32.const 1 - i32.shl - memory.copy - local.get $3 - local.get $6 - i32.add - local.set $3 - end - local.get $1 - if - local.get $5 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 1184 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $3 - i32.add - local.set $3 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.const 0 + i32.const 1120 + i32.const 36 + i32.const 3 + 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 offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=12 + local.get $0 + i32.const 1088 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 37 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $templateliteral/Ref#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $templateliteral/Ref#constructor + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 5360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $5 + i32.store offset=20 + local.get $0 + call $templateliteral/Ref#toString + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.shl - i32.add + i32.store offset=16 + local.get $1 + local.get $3 + call $~lib/string/String#concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 5392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $templateliteral/Ref#toString + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) - (local $1 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 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - i32.const 2 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store - local.get $0 - local.get $1 - call $~lib/util/string/joinStringArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $templateliteral/Ref#constructor (param $0 i32) (result i32) - (local $1 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 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 + call $templateliteral/Ref#toString + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + i32.const 5444 + local.get $1 + i32.store + i32.const 5440 + local.get $1 i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + i32.const 5452 + local.get $0 + i32.store + i32.const 5440 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (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 - block $folding-inner0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=12 + i32.const 5440 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 5488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + 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 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $templateliteral/Ref#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $templateliteral/Ref#toString + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 5664 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + i32.const 5620 + local.get $0 + i32.store + i32.const 5616 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner0 + i32.const 5616 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 5664 + i32.store offset=24 + i32.const 5628 + i32.const 5664 + i32.store + i32.const 5616 + i32.const 5664 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=8 + i32.const 5616 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load - call $~lib/number/I32#toString - local.set $0 + i32.const 5696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 5904 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer - i32.const 5328 + i32.const 5760 + i32.const 0 + call $templateliteral/RecursiveObject#constructor + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 5328 + global.get $~lib/memory/__stack_pointer + i32.const 1088 local.get $0 - call $~lib/string/String#concat + call $templateliteral/RecursiveObject#constructor + local.tee $0 + 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=4 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $templateliteral/RecursiveObject#constructor (param $0 i32) (param $1 i32) (result 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 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - 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 8 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $templateliteral/RecursiveObject#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $1 - i32.store offset=4 - local.get $1 - i32.eqz - if + i32.const 1056 + local.get $0 + call $templateliteral/RecursiveObject#constructor + local.tee $0 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=16 local.get $0 - i32.load + call $templateliteral/RecursiveObject#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 125 + 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/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - call $templateliteral/RecursiveObject#toString - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 5824 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - i32.const 5824 - local.get $0 - i32.store - i32.const 5824 - local.get $0 + i32.const 38704 + i32.const 38752 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5824 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - i32.const 5832 - local.get $1 - i32.store - i32.const 5824 - local.get $1 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5824 - i32.store - i32.const 5824 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/ternary.release.wat b/tests/compiler/ternary.release.wat index fda76df259..fa841a2a0c 100644 --- a/tests/compiler/ternary.release.wat +++ b/tests/compiler/ternary.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32 i32))) (type $2 (func (param i32))) - (type $3 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32 i32) (result i32))) (type $4 (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) @@ -14,12 +14,6 @@ (export "testDropWithTypeMismatch" (func $ternary/testDropWithTypeMismatch)) (export "memory" (memory $0)) (export "testVoidInclTypeMismatch" (func $export:ternary/testVoidInclTypeMismatch)) - (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - local.get $2 - local.get $0 - select - ) (func $ternary/testDropWithTypeMismatch (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -47,6 +41,12 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + local.get $2 + local.get $0 + select + ) (func $export:ternary/testVoidInclTypeMismatch (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/throw.release.wat b/tests/compiler/throw.release.wat index 036b91c2d2..7336e48213 100644 --- a/tests/compiler/throw.release.wat +++ b/tests/compiler/throw.release.wat @@ -45,766 +45,179 @@ (export "doThrow" (func $throw/doThrow)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots + (func $~lib/rt/itcms/step (local $0 i32) (local $1 i32) - i32.const 1488 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i64) + (local $3 i32) + (local $4 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1392 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $3 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$92 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34516 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $3 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$92 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $3 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1392 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - 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 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1728 - i32.load - i32.gt_u - if - i32.const 1488 - i32.const 1552 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 1732 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - 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/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1632 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1632 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1632 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/step - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $3 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34516 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $3 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $3 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 229 - i32.const 20 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end @@ -1039,69 +452,627 @@ end return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$92 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$92 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1728 + i32.load + i32.gt_u + if + i32.const 1488 + i32.const 1552 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1732 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + 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/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1632 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1632 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - ) - (func $throw/doThrow - global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1632 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1632 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1696 - i32.const 1168 - i32.const 3 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return end - unreachable ) (func $~start (local $0 i32) @@ -1238,4 +1209,33 @@ unreachable end ) + (func $throw/doThrow + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + 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 + i32.const 1056 + i32.store + i32.const 1696 + i32.const 1168 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/typealias.release.wat b/tests/compiler/typealias.release.wat index 997ab9cfcc..19dc83cfe9 100644 --- a/tests/compiler/typealias.release.wat +++ b/tests/compiler/typealias.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33948)) (memory $0 1) @@ -19,65 +19,6 @@ (export "alias" (func $typealias/alias)) (export "memory" (memory $0)) (start $~start) - (func $typealias/outer_function~inner_function - i32.const 1136 - i32.const 1136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 17 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - ) - (func $typealias/alias (param $0 i32) (result i32) - local.get $0 - ) - (func $~start - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1180 - i32.lt_s - if - i32.const 33968 - i32.const 34016 - 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 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 13 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - i32.const 1168 - i32.load - call_indirect (type $0) - 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 $3 i32) @@ -240,4 +181,63 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1180 + i32.lt_s + if + i32.const 33968 + i32.const 34016 + 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 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1168 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $typealias/outer_function~inner_function + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + ) + (func $typealias/alias (param $0 i32) (result i32) + local.get $0 + ) ) diff --git a/tests/compiler/typeof.release.wat b/tests/compiler/typeof.release.wat index dade9d6465..f2e06714bf 100644 --- a/tests/compiler/typeof.release.wat +++ b/tests/compiler/typeof.release.wat @@ -4,9 +4,9 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -54,58 +54,167 @@ (data $17.1 (i32.const 1816) " ") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1264 - call $~lib/rt/itcms/__visit - global.get $typeof/c - local.tee $0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1820 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 34608 + i32.const 34656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1552 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$78 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$78 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -651,119 +760,121 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $typeof/SomeClass + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + 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 1820 + i32.lt_s + if + i32.const 34608 + i32.const 34656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1696 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -845,342 +956,192 @@ i32.const 34592 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34588 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1696 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1264 + call $~lib/rt/itcms/__visit + global.get $typeof/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1424 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34588 - 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.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (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$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34588 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1696 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (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$70 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if global.get $~lib/rt/itcms/total i32.const 1 @@ -1392,65 +1353,6 @@ memory.fill local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $typeof/SomeClass - block $~lib/function/Function<%28%29=>void> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - 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 1820 - i32.lt_s - if - i32.const 34608 - i32.const 34656 - 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.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - unreachable - ) (func $~start global.get $~started if @@ -1460,166 +1362,264 @@ global.set $~started call $start:typeof ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/step (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1820 - i32.lt_s - if - i32.const 34608 - i32.const 34656 - 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 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - 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 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $2 - i32.const 8 - i32.add - local.set $2 + local.get $0 + global.set $~lib/rt/itcms/iter 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-loop|0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34588 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - block $__inlined_func$~lib/util/string/compareImpl$78 - loop $while-continue|1 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34588 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + 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 - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34588 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + 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 $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$78 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|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 $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1696 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:typeof diff --git a/tests/compiler/unify-local-flags.release.wat b/tests/compiler/unify-local-flags.release.wat index 25c3a2b4ca..7e2c3911fe 100644 --- a/tests/compiler/unify-local-flags.release.wat +++ b/tests/compiler/unify-local-flags.release.wat @@ -5,35 +5,35 @@ (export "testWhile" (func $unify-local-flags/testWhile)) (export "testDo" (func $unify-local-flags/testDo)) (export "memory" (memory $0)) - (func $unify-local-flags/testFor + (func $unify-local-flags/testWhile (local $0 i32) - loop $for-loop|0 + loop $while-continue|2 local.get $0 i32.const 255 + i32.and + i32.const 255 i32.lt_u if local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $while-continue|2 end end ) - (func $unify-local-flags/testWhile + (func $unify-local-flags/testFor (local $0 i32) - loop $while-continue|2 + loop $for-loop|0 local.get $0 i32.const 255 - i32.and - i32.const 255 i32.lt_u if local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|2 + br $for-loop|0 end end ) diff --git a/tests/compiler/while.release.wat b/tests/compiler/while.release.wat index 7057cf790a..90a58e5b7a 100644 --- a/tests/compiler/while.release.wat +++ b/tests/compiler/while.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -34,132 +34,347 @@ (data $9 (i32.const 1488) "\05\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/visitRoots + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$128 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34280 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1168 - i32.const 132 - i32.const 16 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 + i32.const 34280 + 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 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34280 + 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 $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34280 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 @@ -231,6 +446,70 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $while/Ref#constructor (result i32) + (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 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + 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 0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -623,119 +902,90 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $while/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid + end + return + end + return + end + return + end + local.get $0 i32.load - local.set $4 - local.get $5 - local.set $1 + call $~lib/rt/itcms/__visit + return end - else + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - 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 $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -817,320 +1067,162 @@ i32.const 34288 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34280 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34280 - 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 - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34280 - 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 $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + 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 $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 + i32.const 1168 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1364,6 +1456,9 @@ memory.fill local.get $0 ) + (func $~start + call $start:while + ) (func $start:while (local $0 i32) (local $1 i32) @@ -1539,11 +1634,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 br_if $while-continue|05 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1561,11 +1655,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 br_if $while-continue|07 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1878,99 +1971,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $while/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - call $start:while - ) - (func $while/Ref#constructor (result i32) - (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 1512 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1512 - 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 0 - 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 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34304 - i32.const 34352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) From 7aadd6b5994657c7f3da193d3a0e89b5ca3c985f Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 12:04:45 +0300 Subject: [PATCH 15/21] move clearPassArguments to top of optimize method foa safety --- src/module.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/module.ts b/src/module.ts index 9d9c58e717..9df786520b 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2642,12 +2642,13 @@ export class Module { // Implicitly run costly non-LLVM optimizations on -O3 or -Oz if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4; + this.clearPassArguments(); + this.setOptimizeLevel(optimizeLevel); this.setShrinkLevel(shrinkLevel); this.setDebugInfo(debugInfo); this.setZeroFilledMemory(zeroFilledMemory); this.setFastMath(true); - this.clearPassArguments(); // OptimizationOptions#parse in src/tools/optimization-options.h const stackIR = optimizeLevel >= 2 || shrinkLevel >= 1; From a5e2d0c49127e7f327939af5784878bc9c50f374 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 12:22:22 +0300 Subject: [PATCH 16/21] minor tweaks for pass pipeline again --- src/module.ts | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/module.ts b/src/module.ts index 9df786520b..b74040ee44 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2660,7 +2660,7 @@ export class Module { this.setAlwaysInlineMaxSize(12); this.setFlexibleInlineMaxSize(70); this.setOneCallerInlineMaxSize(200); - this.setAllowInliningFunctionsWithLoops(optimizeLevel >= 3); + this.setAllowInliningFunctionsWithLoops(true); } else { this.setAlwaysInlineMaxSize( optimizeLevel <= 1 || shrinkLevel >= 2 @@ -2687,9 +2687,10 @@ export class Module { } // --- PassRunner::addDefaultFunctionOptimizationPasses --- - if (optimizeLevel >= 2) { + if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("inlining"); passes.push("simplify-globals-optimizing"); + passes.push("generate-global-effects"); } if (optimizeLevel >= 3 || shrinkLevel >= 1) { passes.push("rse"); @@ -2704,12 +2705,6 @@ export class Module { passes.push("simplify-globals-optimizing"); passes.push("dae-optimizing"); } - if (this.getFeatures() & FeatureFlags.MultiValue) { - // Optimize tuples before local opts (as splitting tuples can help local - // opts), but also not too early, as we want to be after - // optimize-instructions at least (which can remove tuple-related things). - passes.push("tuple-optimization"); - } if (optimizeLevel >= 3) { passes.push("simplify-locals-nostructure"); passes.push("flatten"); @@ -2729,10 +2724,18 @@ export class Module { passes.push("remove-unused-brs"); passes.push("remove-unused-names"); passes.push("merge-blocks"); + if (this.getFeatures() & FeatureFlags.MultiValue) { + // Optimize tuples before local opts (as splitting tuples can help local + // opts), but also not too early, as we want to be after + // optimize-instructions at least (which can remove tuple-related things). + passes.push("tuple-optimization"); + } if (optimizeLevel >= 3 || shrinkLevel >= 2) { passes.push("inlining"); passes.push("precompute-propagate"); passes.push("simplify-globals-optimizing"); + } else if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("precompute-propagate"); } else { passes.push("precompute"); } @@ -2754,7 +2757,7 @@ export class Module { passes.push("rse"); passes.push("vacuum"); } - if (optimizeLevel >= 3 || shrinkLevel >= 1) { + if (shrinkLevel >= 1) { passes.push("merge-locals"); passes.push("vacuum"); } @@ -2772,7 +2775,6 @@ export class Module { // --- PassRunner::addDefaultGlobalOptimizationPostPasses --- if (optimizeLevel >= 2 || shrinkLevel >= 1) { - passes.push("generate-global-effects"); passes.push("simplify-globals-optimizing"); passes.push("dae-optimizing"); } @@ -2860,16 +2862,21 @@ export class Module { passes.push("simplify-globals-optimizing"); passes.push("reorder-globals"); passes.push("reorder-functions"); - passes.push("remove-unused-brs"); passes.push("optimize-instructions"); } // clean up - passes.push("duplicate-function-elimination"); + if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("duplicate-function-elimination"); + } if (shrinkLevel >= 2) { passes.push("merge-similar-functions"); } passes.push("memory-packing"); passes.push("remove-unused-module-elements"); + if (optimizeLevel >= 2 || shrinkLevel >= 1) { + // release the global-effects cache populated earlier in post-passes. + passes.push("discard-global-effects"); + } this.runPasses(passes); } From 1c88fdea7d5b9068608e245b2cad716d32e9933b Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 12:33:53 +0300 Subject: [PATCH 17/21] fixes --- src/module.ts | 1 + tests/compiler/std/array.release.wat | 4 +- tests/compiler/std/math.release.wat | 213 ++++++---------------- tests/compiler/std/typedarray.release.wat | 4 +- 4 files changed, 58 insertions(+), 164 deletions(-) diff --git a/src/module.ts b/src/module.ts index b74040ee44..4dfd285233 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2862,6 +2862,7 @@ export class Module { passes.push("simplify-globals-optimizing"); passes.push("reorder-globals"); passes.push("reorder-functions"); + passes.push("remove-unused-brs"); passes.push("optimize-instructions"); } // clean up diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index cabde24ae4..51cb4b38f6 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -10592,8 +10592,6 @@ (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - local.set $2 local.get $1 i64.const 10 i64.lt_u @@ -10606,6 +10604,8 @@ i32.const 1 return end + local.get $0 + local.set $2 local.get $1 i64.const 4294967295 i64.le_u diff --git a/tests/compiler/std/math.release.wat b/tests/compiler/std/math.release.wat index 99f49dfb63..244d0cc93e 100644 --- a/tests/compiler/std/math.release.wat +++ b/tests/compiler/std/math.release.wat @@ -10734,32 +10734,29 @@ ) (func $~lib/math/NativeMath.sincos (param $0 f64) (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i64) - (local $7 i32) - (local $8 f64) - (local $9 f64) + (local $2 f64) + (local $3 i32) + (local $4 i64) + (local $5 f64) + (local $6 i32) local.get $0 i64.reinterpret_f64 - local.tee $6 + local.tee $4 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $6 i32.const 31 i32.shr_u - local.set $7 - local.get $2 + local.set $3 + local.get $6 i32.const 2147483647 i32.and - local.tee $2 + local.tee $6 i32.const 1072243195 i32.le_u if - local.get $2 + local.get $6 i32.const 1044816030 i32.lt_u if @@ -10767,34 +10764,30 @@ end return end - local.get $2 + local.get $6 i32.const 2139095040 i32.ge_u if return end - block $~lib/math/rempio2|inlined.3 (result i32) - local.get $6 + block $~lib/math/rempio2|inlined.3 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 + local.tee $6 i32.const 1073928572 i32.lt_u if - i32.const 1 - local.set $2 - local.get $7 + local.get $3 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add local.set $0 - i32.const -1 - local.set $2 - local.get $5 + local.get $6 i32.const 1073291771 i32.ne if (result f64) @@ -10825,7 +10818,7 @@ f64.const -1.5707963267341256 f64.add local.set $0 - local.get $5 + local.get $6 i32.const 1073291771 i32.ne if (result f64) @@ -10855,33 +10848,32 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $2 br $~lib/math/rempio2|inlined.3 end - local.get $5 + local.get $6 i32.const 1094263291 i32.lt_u if - local.get $5 + local.get $6 i32.const 20 i32.shr_u - local.tee $2 + local.tee $3 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $3 + local.tee $5 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $3 + local.get $5 f64.const 6.077100506506192e-11 f64.mul - local.tee $1 + local.tee $2 f64.sub - local.tee $4 + local.tee $1 i64.reinterpret_f64 i64.const 32 i64.shr_u @@ -10895,26 +10887,26 @@ i32.gt_u if local.get $3 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 local.get $0 - local.get $3 + local.tee $1 + local.get $5 f64.const 6.077100506303966e-11 f64.mul - local.tee $1 + local.tee $2 f64.sub local.tee $0 - f64.sub + local.get $5 + f64.const 2.0222662487959506e-21 + f64.mul local.get $1 + local.get $0 f64.sub - f64.sub - local.set $1 local.get $2 - local.get $0 - local.get $1 f64.sub - local.tee $4 + f64.sub + local.tee $2 + f64.sub + local.tee $1 i64.reinterpret_f64 i64.const 32 i64.shr_u @@ -10927,146 +10919,47 @@ i32.const 49 i32.gt_u if - local.get $3 - f64.const 8.4784276603689e-32 - f64.mul local.get $0 - local.get $0 - local.get $3 + local.tee $1 + local.get $5 f64.const 2.0222662487111665e-21 f64.mul - local.tee $1 + local.tee $2 f64.sub local.tee $0 - f64.sub + local.get $5 + f64.const 8.4784276603689e-32 + f64.mul local.get $1 + local.get $0 + f64.sub + local.get $2 f64.sub f64.sub - local.set $1 - local.get $0 - local.get $1 + local.tee $2 f64.sub - local.set $4 + local.set $1 end end - local.get $4 + local.get $1 global.set $~lib/math/rempio2_y0 local.get $0 - local.get $4 - f64.sub local.get $1 f64.sub + local.get $2 + f64.sub global.set $~lib/math/rempio2_y1 - local.get $3 - i32.trunc_sat_f64_s br $~lib/math/rempio2|inlined.3 end - i32.const 0 - local.get $6 + local.get $4 call $~lib/math/pio2_large_quot - local.tee $2 - i32.sub - local.get $2 - local.get $7 - select + drop end - local.set $2 global.get $~lib/math/rempio2_y0 - local.tee $3 - local.get $3 - f64.mul local.tee $0 - local.get $3 - f64.mul - local.set $1 - local.get $3 local.get $0 - global.get $~lib/math/rempio2_y1 - local.tee $8 - f64.const 0.5 - f64.mul - local.get $1 - local.get $0 - local.get $0 - f64.const 2.7557313707070068e-06 f64.mul - f64.const -1.984126982985795e-04 - f64.add - f64.mul - f64.const 0.00833333333332249 - f64.add - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.mul - local.get $0 - f64.const 1.58969099521155e-10 - f64.mul - f64.const -2.5050760253406863e-08 - f64.add - f64.mul - f64.add - f64.mul - f64.sub - f64.mul - local.get $8 - f64.sub - local.get $1 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - local.set $4 - f64.const 1 - local.get $0 - f64.const 0.5 - f64.mul - local.tee $1 - f64.sub - local.tee $9 - f64.const 1 - local.get $9 - f64.sub - local.get $1 - f64.sub - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 2.480158728947673e-05 - f64.mul - f64.const -0.001388888888887411 - f64.add - f64.mul - f64.const 0.0416666666666666 - f64.add - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.get $0 - local.get $0 - f64.const -1.1359647557788195e-11 - f64.mul - f64.const 2.087572321298175e-09 - f64.add - f64.mul - f64.const -2.7557314351390663e-07 - f64.add - f64.mul - f64.add - f64.mul - local.get $3 - local.get $8 - f64.mul - f64.sub - f64.add - f64.add - local.set $1 + local.set $0 ) (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 f64) diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index d65e1d98a9..d4c4a18806 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -15452,8 +15452,6 @@ (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - local.set $2 local.get $1 i64.const 10 i64.lt_u @@ -15466,6 +15464,8 @@ i32.const 1 return end + local.get $0 + local.set $2 local.get $1 i64.const 4294967295 i64.le_u From 77c70242a956b9c9ad29625b2affb6eb3ec35b88 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 14:56:09 +0300 Subject: [PATCH 18/21] minor tweaks for pass pipeline --- src/module.ts | 5 +++-- tests/compiler/class-overloading.release.wat | 9 --------- tests/compiler/class-static-function.release.wat | 13 ++----------- tests/compiler/inlining.release.wat | 9 --------- 4 files changed, 5 insertions(+), 31 deletions(-) diff --git a/src/module.ts b/src/module.ts index 4dfd285233..d08dcc5b1a 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2860,11 +2860,12 @@ export class Module { } passes.push("simplify-globals-optimizing"); - passes.push("reorder-globals"); - passes.push("reorder-functions"); passes.push("remove-unused-brs"); passes.push("optimize-instructions"); + passes.push("vacuum"); } + passes.push("reorder-globals"); + passes.push("reorder-functions"); // clean up if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("duplicate-function-elimination"); diff --git a/tests/compiler/class-overloading.release.wat b/tests/compiler/class-overloading.release.wat index 678fb5f27f..5552f940ac 100644 --- a/tests/compiler/class-overloading.release.wat +++ b/tests/compiler/class-overloading.release.wat @@ -3162,15 +3162,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - if - i32.const 0 - i32.const 1552 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/class-static-function.release.wat b/tests/compiler/class-static-function.release.wat index d52e31d386..2cec4c8884 100644 --- a/tests/compiler/class-static-function.release.wat +++ b/tests/compiler/class-static-function.release.wat @@ -1,7 +1,7 @@ (module (type $0 (func (result i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) + (type $1 (func)) + (type $2 (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 33916)) (memory $0 1) @@ -39,15 +39,6 @@ i32.load call_indirect (type $0) drop - i32.const 0 - 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 4 i32.add diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat index 5ac8156f82..0da8126d77 100644 --- a/tests/compiler/inlining.release.wat +++ b/tests/compiler/inlining.release.wat @@ -1740,15 +1740,6 @@ i32.load call_indirect (type $5) drop - i32.const 0 - if - i32.const 0 - i32.const 1056 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer i32.const 123 i32.store From 7fb6a460e98aac853f7ac76f3b9898997f616d11 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 23 Apr 2026 15:59:41 +0300 Subject: [PATCH 19/21] update binaryen --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index bdbe74d21e..c445441811 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "129.0.0-nightly.20260422", + "binaryen": "129.0.0-nightly.20260423", "long": "^5.2.4" }, "bin": { @@ -978,9 +978,9 @@ } }, "node_modules/binaryen": { - "version": "129.0.0-nightly.20260422", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-129.0.0-nightly.20260422.tgz", - "integrity": "sha512-Sro8xjjdaTSVUZc0aL98EA2T3jT6BVq4ehCdsGguyGZ2aGlj0OrdWwY7fsD6NqhjZIoON5xRX/lQ2vfaOaRGSA==", + "version": "129.0.0-nightly.20260423", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-129.0.0-nightly.20260423.tgz", + "integrity": "sha512-lkWJb90IF8+/yc0RAFvew7VCtLmVhT0USOBwjHbY9HaAK6HgYAvi/HATeAUoL37C+pc35aNzyowyaLqzV43QRQ==", "license": "Apache-2.0", "bin": { "wasm-as": "bin/wasm-as", diff --git a/package.json b/package.json index 4bcdc29ccf..163ad68d8b 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "engineStrict": true, "dependencies": { - "binaryen": "129.0.0-nightly.20260422", + "binaryen": "129.0.0-nightly.20260423", "long": "^5.2.4" }, "devDependencies": { From 0f86186a74045f04a45b37e344fd91f44e26228b Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Fri, 24 Apr 2026 10:09:31 +0300 Subject: [PATCH 20/21] update binaryen again --- package-lock.json | 8 ++++---- package.json | 2 +- src/module.ts | 9 +++++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index c445441811..a90f953517 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "129.0.0-nightly.20260423", + "binaryen": "129.0.0-nightly.20260424", "long": "^5.2.4" }, "bin": { @@ -978,9 +978,9 @@ } }, "node_modules/binaryen": { - "version": "129.0.0-nightly.20260423", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-129.0.0-nightly.20260423.tgz", - "integrity": "sha512-lkWJb90IF8+/yc0RAFvew7VCtLmVhT0USOBwjHbY9HaAK6HgYAvi/HATeAUoL37C+pc35aNzyowyaLqzV43QRQ==", + "version": "129.0.0-nightly.20260424", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-129.0.0-nightly.20260424.tgz", + "integrity": "sha512-pdzKrDKhIIfSV+x8vuw8PDvLKdgVAeg2v6X4BYGE1pX2KZWXJtkTXd7OZhDtgzACrRebka3T9e7K0AxbaYB9mw==", "license": "Apache-2.0", "bin": { "wasm-as": "bin/wasm-as", diff --git a/package.json b/package.json index 163ad68d8b..03e3a2f9c7 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "engineStrict": true, "dependencies": { - "binaryen": "129.0.0-nightly.20260423", + "binaryen": "129.0.0-nightly.20260424", "long": "^5.2.4" }, "devDependencies": { diff --git a/src/module.ts b/src/module.ts index d08dcc5b1a..79efc7896e 100644 --- a/src/module.ts +++ b/src/module.ts @@ -218,9 +218,10 @@ export const enum FeatureFlags { BulkMemoryOpt = 524288 /* _BinaryenFeatureBulkMemoryOpt */, CallIndirectOverlong = 1048576 /* _BinaryenFeatureCallIndirectOverlong */, RelaxedAtomics = 4194304 /* _BinaryenFeatureRelaxedAtomics */, - Multibyte = 16777216 /* _BinaryenFeatureMultibyte */, CustomPageSizes = 8388608 /* _BinaryenFeatureCustomPageSizes */, - All = 33554431 /* _BinaryenFeatureAll */ + Multibyte = 16777216 /* _BinaryenFeatureMultibyte */, + WideArithmetic = 33554432 /* _BinaryenFeatureWideArithmetic */, + All = 67108863 /* _BinaryenFeatureAll */ } /** Binaryen expression id constants. See wasm-delegations.def in Binaryen. */ @@ -625,6 +626,10 @@ export const enum UnaryOp { // FIXME: f16x8 splat/trunc_sat/convert (136..140) are in wasm.h but not yet exported via C API /** f32x4.promote_low_f16x8 */ PromoteLowF16x8ToF32x4 = 141 /* _BinaryenPromoteLowVecF16x8ToVecF32x4 */, + /** f16x8.demote_f32x4_zero */ + // DemoteZeroF32x4ToF16x8 = 142 /* TODO_BinaryenDemoteZeroVecF32x4ToVecF16x8 */, + /** f16x8.demote_f64x2_zero */ + // DemoteZeroF64x2ToF16x8 = 143 /* TODO_BinaryeDemoteZeroVecF64x2ToVecF16x8 */, _last = PromoteLowF16x8ToF32x4, From 5ee9ce91e35f62ded0f1630be7e6554466b0e038 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Fri, 24 Apr 2026 10:22:49 +0300 Subject: [PATCH 21/21] handle shared everything feat for setFeature --- src/common.ts | 1 + src/compiler.ts | 5 +++++ src/index-wasm.ts | 2 ++ src/program.ts | 6 +++++- std/assembly/shared/feature.ts | 5 ++++- 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/common.ts b/src/common.ts index 3cc25a0845..f5336f0479 100644 --- a/src/common.ts +++ b/src/common.ts @@ -191,6 +191,7 @@ export namespace CommonNames { export const ASC_FEATURE_RELAXED_SIMD = "ASC_FEATURE_RELAXED_SIMD"; export const ASC_FEATURE_EXTENDED_CONST = "ASC_FEATURE_EXTENDED_CONST"; export const ASC_FEATURE_STRINGREF = "ASC_FEATURE_STRINGREF"; + export const ASC_FEATURE_SHARED_EVERYTHING = "ASC_FEATURE_SHARED_EVERYTHING"; export const ASC_VERSION_MAJOR = "ASC_VERSION_MAJOR"; export const ASC_VERSION_MINOR = "ASC_VERSION_MINOR"; export const ASC_VERSION_PATCH = "ASC_VERSION_PATCH"; diff --git a/src/compiler.ts b/src/compiler.ts index a7df58d26f..87ec94adfb 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -325,6 +325,8 @@ export class Options { /** Sets whether a feature is enabled. */ setFeature(feature: Feature, on: bool = true): void { if (on) { + // Enabling Shared Everything also enables Threads and GC + if (feature & Feature.SharedEverything) feature |= Feature.Threads | Feature.GC; // Enabling Stringref also enables GC if (feature & Feature.Strings) feature |= Feature.GC; // Enabling GC also enables Reference Types @@ -339,6 +341,8 @@ export class Options { if (feature & Feature.GC) feature |= Feature.Strings; // Disabling SIMD also disables Relaxed SIMD if (feature & Feature.Simd) feature |= Feature.RelaxedSimd; + // Disabling Threads or GC also disables Shared Everything + if (feature & (Feature.Threads | Feature.GC)) feature |= Feature.SharedEverything; this.features &= ~feature; } } @@ -516,6 +520,7 @@ export class Compiler extends DiagnosticEmitter { if (options.hasFeature(Feature.RelaxedSimd)) featureFlags |= FeatureFlags.RelaxedSIMD; if (options.hasFeature(Feature.ExtendedConst)) featureFlags |= FeatureFlags.ExtendedConst; if (options.hasFeature(Feature.Strings)) featureFlags |= FeatureFlags.Strings; + if (options.hasFeature(Feature.SharedEverything)) featureFlags |= FeatureFlags.SharedEverything; module.setFeatures(featureFlags); // set up the main start function diff --git a/src/index-wasm.ts b/src/index-wasm.ts index 2944ef7636..b448aa0ae4 100644 --- a/src/index-wasm.ts +++ b/src/index-wasm.ts @@ -202,6 +202,8 @@ export const FEATURE_RELAXED_SIMD = Feature.RelaxedSimd; export const FEATURE_EXTENDED_CONST = Feature.ExtendedConst; /** String references. */ export const FEATURE_STRINGREF = Feature.Strings; +/** Shared-everything threads. */ +export const FEATURE_SHARED_EVERYTHING = Feature.SharedEverything; /** All features. */ export const FEATURES_ALL = Feature.All; /** Default features. */ diff --git a/src/program.ts b/src/program.ts index 9ffcd3e0c3..b03a82bd4f 100644 --- a/src/program.ts +++ b/src/program.ts @@ -1086,6 +1086,8 @@ export class Program extends DiagnosticEmitter { i64_new(options.hasFeature(Feature.ExtendedConst) ? 1 : 0, 0)); this.registerConstantInteger(CommonNames.ASC_FEATURE_STRINGREF, Type.bool, i64_new(options.hasFeature(Feature.Strings) ? 1 : 0, 0)); + this.registerConstantInteger(CommonNames.ASC_FEATURE_SHARED_EVERYTHING, Type.bool, + i64_new(options.hasFeature(Feature.Strings) ? 1 : 0, 0)); // remember deferred elements let queuedImports = new Array(); @@ -1289,7 +1291,9 @@ export class Program extends DiagnosticEmitter { this.registerWrapperClass(Type.bool, CommonNames.Bool); this.registerWrapperClass(Type.f32, CommonNames.F32); this.registerWrapperClass(Type.f64, CommonNames.F64); - if (options.hasFeature(Feature.Simd)) this.registerWrapperClass(Type.v128, CommonNames.V128); + if (options.hasFeature(Feature.Simd)) { + this.registerWrapperClass(Type.v128, CommonNames.V128); + } if (options.hasFeature(Feature.ReferenceTypes)) { this.registerWrapperClass(Type.func, CommonNames.RefFunc); this.registerWrapperClass(Type.extern, CommonNames.RefExtern); diff --git a/std/assembly/shared/feature.ts b/std/assembly/shared/feature.ts index 0691f422d3..6fe809b326 100644 --- a/std/assembly/shared/feature.ts +++ b/std/assembly/shared/feature.ts @@ -34,8 +34,10 @@ export const enum Feature { ExtendedConst = 1 << 13, // see: https://github.com/WebAssembly/extended-const /** Reference typed strings. */ Strings = 1 << 14, // see: https://github.com/WebAssembly/stringref + /** Shared-everything threads. */ + SharedEverything = 1 << 15, // see: https://github.com/WebAssembly/shared-everything-threads /** All features. */ - All = (1 << 15) - 1 + All = (1 << 16) - 1 } /** Gets the name of the specified feature one would specify on the command line. */ @@ -56,6 +58,7 @@ export function featureToString(feature: Feature): string { case Feature.RelaxedSimd: return "relaxed-simd"; case Feature.ExtendedConst: return "extended-const"; case Feature.Strings: return "stringref"; + case Feature.SharedEverything: return "shared-everything"; } assert(false); return "";